我讀過Convert.ToString應該處理空,但它不工作。Convert.ToString當它傳遞一個空對象在我的代碼</p> <p>在這種情況下,對象「名稱」爲空不處理空
var name = Convert.ToString(Name.LastName);
我得到的對象引用未設置爲對象的實例。
我讀過Convert.ToString應該處理空,但它不工作。Convert.ToString當它傳遞一個空對象在我的代碼</p> <p>在這種情況下,對象「名稱」爲空不處理空
var name = Convert.ToString(Name.LastName);
我得到的對象引用未設置爲對象的實例。
異常不是由Convert.ToString()
造成的。
由於您試圖從空引用中獲取LastName
的值,因此代碼中存在異常。這會導致運行時異常。
要修復它,您需要檢查Name
是否爲空,然後再嘗試訪問LastName
。
var name = Name != null ? Convert.ToString(Name.LastName) : null;
這與Convert.ToString
無關。您正試圖通過空引用訪問LastName
。這是一個運行時異常。
Name
和LastName
都可以爲空。如果Name
爲空,則Convert.ToString
將永遠不會在上面的代碼中調用。
+1爲空檢查 – deltree 2012-02-08 22:23:56
處理此問題的最佳方法是什麼? – 2012-02-08 22:24:02
檢查名稱是否爲空。 – 2012-02-08 22:24:40
在這種情況下,當C#評估Name.LastName時,它會崩潰。這是因爲你真的在評估Null.LastName,這是沒有意義的。 Conver.ToString(空),將工作。
當Name
爲空時,您無法訪問null
的.LastName。
var name = Convert.ToString((Name != null) ? Name.LastName : "");
書面,你的代碼說要做到以下幾點:
Name
在內存中。LastName
場Name
Name.LastName
領域的Convert.ToString
方法name
在步驟2中你的代碼沒有因爲Name
爲空,有沒有Name.LastName
字段可用,所以你永遠不會讓它到第3步。因此,Convert.ToString
是否正確處理空參數並不重要,因爲NullReferenceException
在您甚至稱爲之前被拋出。
感謝....雖然,我用var name = Name!= null? Convert.ToString(Name.LastName):「」; – 2012-02-08 22:38:45
這個答案是錯誤的。看[這個問題](http:// stackoverflow。com/questions/10355736/why-does-convert-tostringnull -return-a-different-value-if-you-cast-null),原因是:因爲即使Name不爲null,如果Lastname爲null,結果也會爲空。 – shipr 2015-08-22 04:56:12
@shipr這與上面提到的問題無關。我的回答解決了原來的問題 - 導致運行時NullReferenceException的原因。 – 2015-09-01 14:37:52