2011-10-06 80 views
1

在我的代码的顶部(构造函数之前)我写: String[] CAN = null;Foreach循环引起的NullReferenceException

此字符串数组是在另一个函数更新。

在我的代码后来我有这样的foreach循环:

foreach (String str in CAN) 
{ 
    if(str.Contains("18FA07FE")) 
     cmdResult = true; 
    else 
     cmdResult = false; 
} 

我试图调试,并在foreach语句的线,我可以看到,CAN字符串数组已成功更新,现在包含1211个元素。

所以我真的不知道为什么它给了我这个例外。

+1

那么,你知道确切位置异常发生? – BoltClock

+0

你检查了你的字符串数组的内容吗?也许数组中的其中一个元素为null。 :) – sailhenz

回答

4

如果问题只与您所展示的代码以及您所描述的代码有关,并且确实数组包含元素,那么唯一可能的解释是CAN中的一个元素是空元素,因此它不是引发异常在foreach 本身,但此行:

if (str.Contains(...)) 
    ^^^ 
    | 
    +-- null 
+0

我同意..。就像我在我的第一个评论中说的,检查字符串数组。 :) – sailhenz

+0

是的,谢了,原来,字符串数组的最后一个元素是null。现在修好了,欢呼! – eightx2

0

你从哪里得到的空指针?它是循环还是if?我猜你的数组包含一个引发这个NPE的'null'元素。

2

也许字符串值中的一个是空

string [] CAN = { "first", "second", null, "fourth" }; 

      foreach (string str in CAN) { 
       if (str.Contains("fourth")) { 
        Console.WriteLine("Success"); 
       } 
      }