2011-04-28 48 views
0

獲取有關該代碼此錯誤的一個實例:對象引用不設置爲一個對象

string pname = null; 
pname = ag.FirstOrDefault().arrangement.parent.name; 
調用線PNAME = ag.FirstOrDefault當

.....

的日提交parent.name是空的(空),這很好,我想在這種情況下得到一個空(空)字符串。 我該如何擺脫錯誤?

回答

0

嘗試

var obj = ag.FirstOrDefault(); 
if(obj !=null) 
pname = obj.arrangement.parent.name ?? String.Empty; 

,或者你可以嘗試

//This will set the variable to null: 
    var obj = ag.FirstOrDefault(); 
    if(obj !=null) 
    pname = Convert.ToString(obj.arrangement.parent.name); 

注:ag.FirstOrDefault()arrangement.parent.name是可空類型

+2

這將拋出一個異常,如果'ag.FirstOrDefault()'返回null – Leons 2011-04-28 11:43:23

+0

提交的parent.name爲空(空) - 這行是由op反正我正在更新我的 – 2011-04-28 12:08:46

6

要麼ag爲空,則FirstOrDefault呼叫返回空,arrangement爲空,或parent爲空。

只有你有能力確定哪一個實際上是罪魁禍首。

+0

+1我會推薦使用哄騙或分成多個陳述。 – Euphoric 2011-04-28 11:38:01

0

您無法訪問空對象的屬性。如果ag.FirstOrDefault()將返回null,那麼您將無法訪問arrangement

var temp = ag.FirstOrDefault(); 
string pname = (temp!= null) ? temp.arrangement.parent.name : null; 

您可能需要做進一步的空檢查。

0

如果屬性ag.FirstOrDefault()。arrangement.parent.name爲null,則表示對象ag也爲null。這是你得到對象引用錯誤的原因。

Leons提供的答案實際上就是我所建議的。你需要對這個問題做一些研究,這是它在編程中避免的一個最簡單的事情(試圖引用一個空對象)。

+0

這不一定意味着'ag'爲空。 'ag'可能爲空; 'FirstOrDefault'的輸出可能爲空; '排列'成員可能爲空; 「父」成員可能爲空。 – LukeH 2011-04-28 11:50:36

相關問題