Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#-IF语句中带有变量的错误_C#_.net - Fatal编程技术网

C#-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 № " +

大家好。我对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 № " + " " + 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,变量将保持未赋值状态,就像错误告诉您的那样

因此,您有两种选择:

  • 在声明时为wayListNums分配一些值
  • 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声明的值,您也可以不分配它,而是确保每个代码路径在使用之前都分配了它。