2017-02-23 88 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