遇到了这行代码:
FormsAuth = formsAuth ?? new FormsAuthenticationWrapper();
这两个问号是什么意思,是某种三元运算符吗?
在谷歌上很难查到。
它是空合并运算符,非常类似于三元(立即 if)运算符。也可以看看??运营商-MSDN.
FormsAuth = formsAuth ?? new FormsAuthenticationWrapper();
扩展到:
FormsAuth = formsAuth != null ? formsAuth : new FormsAuthenticationWrapper();
进一步扩展到:
if(formsAuth != null)
FormsAuth = formsAuth;
else
FormsAuth = new FormsAuthenticationWrapper();
在英语中,它的意思是“如果左边的内容不为空,则使用它,否则使用右边的内容”。
请注意,您可以按顺序使用任意数量的这些。以下语句将分配第一个非空值Answer#
to Answer
(如果所有答案均为空,则Answer
一片空白):
string Answer = Answer1 ?? Answer2 ?? Answer3 ?? Answer4;
另外值得一提的是,虽然上面的扩展在概念上是等效的,但每个表达式的结果仅计算一次。例如,如果表达式是具有副作用的方法调用,则这一点很重要。 (感谢 @Joey 指出了这一点。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)