2017-02-23 83 views
0

的代碼如下:?的含義是什麼?和??運營商

if(f1) 
{ 
    return a1?.a2 ?? a3 
} 

誰能告訴這裏使用這些運營商的?

+0

http://stackoverflow.com/questions/7331686/why-and-not – Priya

+1

可能重複的[Why && and not&](http://stackoverflow.com/questions/7331686/why-and-not) – Priya

+0

返回a1?.a2 ?? a3 a1可以爲空。如果不是,那麼它將返回a2。如果兩者都爲空,則返回a3。 https://msdn.microsoft.com/en-us/library/1t3y8s4s.aspx https://msdn.microsoft.com/en-us/library/ms173224.aspx – TheNoob

回答

2

先操作員??例如:

var c = a ?? b; 

相當於

var c = a == null ? b : a; 

第二個?。它是不扔的NullReferenceException例如:

var c = a?.Name; 

相當於

var c = a == null ? null : a.Name; 

這是捷徑,以避免如果和排長隊

你收到了嗎?

+0

是的,謝謝,這很有幫助。 – Sandya

+0

在一個很長的結尾處對原始類型注意的一件重要事情是它們都是變成可爲空的類型,這意味着你不能直接與某些值進行比較,你可能不得不使用.GetValueOrDefault()或其他一些Nullable函數。 – thinklarge