2012-02-08 14 views

回答

2

異常不是由Convert.ToString()造成的。

由於您試圖從空引用中獲取LastName的值,因此代碼中存在異常。這會導致運行時異常。

要修復它,您需要檢查Name是否爲空,然後再嘗試訪問LastName

var name = Name != null ? Convert.ToString(Name.LastName) : null; 
+0

感謝....雖然,我用var name = Name!= null? Convert.ToString(Name.LastName):「」; – 2012-02-08 22:38:45

+0

這個答案是錯誤的。看[這個問題](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

+0

@shipr這與上面提到的問題無關。我的回答解決了原來的問題 - 導致運行時NullReferenceException的原因。 – 2015-09-01 14:37:52

9

這與Convert.ToString無關。您正試圖通過空引用訪問LastName。這是一個運行時異常。

NameLastName都可以爲空。如果Name爲空,則Convert.ToString將永遠不會在上面的代碼中調用。

+0

+1爲空檢查 – deltree 2012-02-08 22:23:56

+0

處理此問題的最佳方法是什麼? – 2012-02-08 22:24:02

+0

檢查名稱是否爲空。 – 2012-02-08 22:24:40

1

在這種情況下,當C#評估Name.LastName時,它會崩潰。這是因爲你真的在評估Null.LastName,這是沒有意義的。 Conver.ToString(空),將工作。

2

Name爲空時,您無法訪問null的.LastName。

var name = Convert.ToString((Name != null) ? Name.LastName : ""); 
1

書面,你的代碼說要做到以下幾點:

  1. 找對象Name在內存中。
  2. 找對象的LastNameName
  3. 傳遞Name.LastName領域的Convert.ToString方法
  4. 分配結果name

在步驟2中你的代碼沒有因爲Name爲空,有沒有Name.LastName字段可用,所以你永遠不會讓它到第3步。因此,Convert.ToString是否正確處理空參數並不重要,因爲NullReferenceException在您甚至稱爲之前被拋出。

相關問題