2011-10-06 54 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"); 
       } 
      }