C# 中双问号 (??) 运算符的含义
在以下代码行中:
<code class="language-csharp">FormsAuth = formsAuth ?? new FormsAuthenticationWrapper();</code>
两个问号 (??) 代表空合并运算符。与三元运算符不同,空合并运算符执行条件赋值,而不是条件执行。
具体来说,表达式 formsAuth ?? new FormsAuthenticationWrapper()
等效于:
<code class="language-csharp">FormsAuth = formsAuth != null ? formsAuth : new FormsAuthenticationWrapper();</code>
此条件赋值意味着:
formsAuth
不为 null,则将其赋值给 FormsAuth
。formsAuth
为 null,则将 FormsAuthenticationWrapper
的新实例赋值给 FormsAuth
。简单来说,它的意思是“如果 formsAuth
不为 null,则使用 formsAuth
;否则,创建一个新的 FormsAuthenticationWrapper
实例”。
与三元运算符不同,空合并运算符仅评估其表达式一次。因此,如果 formsAuth
是具有副作用的方法调用,则其副作用只会触发一次。
为了进一步说明,以下表达式将把第一个非空 Answer 赋值给 Answer。如果所有 Answer 都为 null,则 Answer 将保持为 null:
<code class="language-csharp">string Answer = Answer1 ?? Answer2 ?? Answer3 ?? Answer4;</code>
以上是双重问号(??)操作员在C#中做什么?的详细内容。更多信息请关注PHP中文网其他相关文章!