2012-02-06 57 views
0

我有這樣的代碼:爲什麼我在這段代碼中得到一個System.NullReferenceException?

IList<MyObject> myObjects = new List<MyObject>(); 
if (param != null) 
{ 
    myObjects = (from ... LINQ1 ...).ToList(); 
} 
else 
{ 
    myObjects = (from ... LINQ2 ...).ToList(); 
} 

foreach (MyObject myObject in myObjects) 
{ 
} 

當在foreach開始,我得到一個System.NullReferenceException。爲什麼?我該如何解決它?看起來很奇怪......

+13

你沒有給我們足夠的代碼知道。也許你的一個查詢包含一個空引用,你正在比較等使用?一個簡短但完整的程序來證明問題會有所幫助。而且,如果你只是要覆蓋它,那麼給予'myObjects'初始值就沒有意義了。 – 2012-02-06 11:55:26

+0

請發表整個代碼。問題可能出在您刪除的代碼片段中。 – 2012-02-06 11:56:00

+0

另外,爲什麼你初始化'myObjects'? – 2012-02-06 11:56:20

回答

1

您的對象正被一個LINQ查詢覆蓋,這很可能返回一個空值。

也是myObjects的意思是一個IList<MyObject>List<MyObject>

+0

如何? 「......)ToList();」。應該返回一個列表,即使是空的。 – TomTom 2012-02-06 11:59:23

+0

@TomTom,是的,但有可能編寫一個返回null ref異常的linq查詢,因爲查詢中的某些內容,To List只是枚舉項目並執行表達式 – 2012-02-06 12:03:01

+0

是的,那是可能的 - 未顯示的部分在評估時拋出空引用。 – TomTom 2012-02-06 12:10:04

相關問題