首页 > 后端开发 > C++ > 双重问号(??)操作员在C#中做什么?

双重问号(??)操作员在C#中做什么?

Mary-Kate Olsen
发布: 2025-01-29 07:54:12
原创
152 人浏览过

What Does the Double Question Mark (??) Operator Do in C#?

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板