C#-IF语句中带有变量的错误
大家好。我对If语句有问题。我错在哪里C#-IF语句中带有变量的错误,c#,.net,C#,.net,大家好。我对If语句有问题。我错在哪里 int cnt = 0; int wayListNums; foreach (TableRow tr in allVisibleRows) { SPListItem itemAdd = wayList.Items.Add(); if (cnt == 0) { wayListNums = itemAdd.ID; } itemAdd["wayNum"] = "WayBill № " +
int cnt = 0;
int wayListNums;
foreach (TableRow tr in allVisibleRows)
{
SPListItem itemAdd = wayList.Items.Add();
if (cnt == 0)
{
wayListNums = itemAdd.ID;
}
itemAdd["wayNum"] = "WayBill № " + " " + wayListNums;
...................
这是以下错误:
错误1使用未分配的局部变量“wayListNums”
编译器不确定集合
allVisibleRows
中的值,有时它可能为null或空(仅当集合为非空以及if(cnt==0)
的计算结果为true时,变量get value)。在这种情况下,wayListNums
的值未知。这就是发出警告的原因。要解决此问题,请在使用前初始化变量:
int wayListNums=0;// or some other value
因此,如果其他条件失败,将使用默认值。您必须将默认值分配给局部变量。。错误提示未分配。。
此处
int-wayListNums=0;//由于int默认值0
,这里的问题是wayListNums在声明时没有默认值。稍后,您将仅在if块中设置它的值,因此如果未执行该if,变量将保持未赋值状态,就像错误告诉您的那样
因此,您有两种选择:
int-wayListNums=0代码>
确保在访问变量之前,每个代码分支都会为变量赋值:
//代码
if (cnt == 0)
{
wayListNums = itemAdd.ID;
}
else
{
wayListNums = somethingElse;
}
在C#和其他类似语言中,编译器希望每个变量的值在使用之前都被初始化。在您的情况下,编译器不确定在if block
中初始化的值是否总是被初始化,并且由于您在if block
的范围之外使用它,编译器只会给您一个未初始化值的错误。简单设置
int wayListNums = 0;
将解决此问题。为int赋值
int wayListNums = 0;
替换int wayListNums;int-wayListNums=0;在使用wayListNums之前,需要为其指定一个值。想一想如果在第一次循环迭代中cnt不等于0会发生什么。可能。清楚地找出错误的根本原因并尝试修复它。问题不在于你在标题中提到的if语句。关于第二点:检查条件有什么用?true和false状态为变量指定相同的值我已经编辑了答案,否则显然应该返回其他值。这样做的目的是,您不必像您建议的那样限制分配uppon声明的值,您也可以不分配它,而是确保每个代码路径在使用之前都分配了它。