C# - IF语句中的变量出错

时间:2016-04-27 05:55:24

标签: 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 № " + " " + wayListNums;

   ...................

这是以下错误:

  

错误1使用未分配的本地变量' wayListNums' ....

5 个答案:

答案 0 :(得分:2)

这里的问题是wayListNums在声明时没有默认值。稍后你只在if块中设置它的值,所以如果没有执行if,那么变量将保持未分配状态,就像错误告诉你的那样。

所以你有两个选择:

  1. 在声明时为wayListNums分配一些值。
  2. int wayListNums = 0;

    1. 确保在访问变量之前,每个代码分支都会为变量赋值:
    2. //代码

      if (cnt == 0) 
         {
            wayListNums = itemAdd.ID; 
         } 
       else
         {
            wayListNums = somethingElse;
         }
      

答案 1 :(得分:0)

编译器不确定集合allVisibleRows中的值有时可能为null或为空(仅当集合非空时变量获取值以及if (cnt == 0)计算结果为true 。)在这种情况下,wayListNums的值是未知的。这就是警告的原因。要解决此问题,请在使用前初始化变量:

int wayListNums=0;// or some other value

如果其他条件失败,将使用默认值。

答案 2 :(得分:0)

您必须为本地变量指定默认值..错误表明它未分配。 这里int wayListNums = 0;// because of int default value 0

答案 3 :(得分:0)

在C#和其他类似语言中,编译器期望在使用之前初始化每个变量的值。在您的情况下,编译器不确定if-block中初始化的值是否始终初始化,并且由于您在if-block范围之外使用它,编译器只会给出一个错误,即该值未初始化。只需设置

    int wayListNums  = 0;

将解决问题。

答案 4 :(得分:0)

为int赋值

int wayListNums = 0;