2016-06-08 39 views
0

空,條件運算符的返回比方說,我有下面的類:C#:對於對象

class Class1 
{ 
    public string MyProp { get; set; } 
} 

然後,讓我們做一個小測試:

Class1 myClass1 = null; 
Console.WriteLine(myClass1?.MyProp ?? "Ohoh"); // Print "Ohoh" 
Console.WriteLine(myClass1.MyProp ?? "Ohoh"); // Null Exception 

什麼回報的類型「myClass1?」。「 ?
爲什麼打印「Ohoh」?

謝謝。

回答

1

(。?)用於在執行成員訪問之前測試null。如果在訪問sayd之前檢查空操作數爲null,則返回null

??如果它不爲null,則返回左操作數;如果爲0,則返回右操作數。

因此,在第二行檢查null失敗,(。?)操作符返回null,並返回?操作符返回右操作數。

在第三行

你嘗試沒有檢查空訪問屬性,你有空引用異常

+0

你說:「(?)運算符返回null」。然後,如果它返回null,.MyProp應該拋出一個異常。但在這裏,它不會拋出任何東西。 – zizou

+0

Oups,好的。 我犯了一個錯誤,你是對的。 這是「myClass1?.MyProp」,它返回null,而不是「」myClass1 ?.「。 – zizou