首页 > C# > 在 C# 中,两个问号在一起是什么意思?

在 C# 中,两个问号在一起是什么意思?

上一篇 下一篇

网友问题:
遇到以下代码行:

FormsAuth = formsAuth ?? new FormsAuthenticationWrapper();

这两个问号是什么意思,是某种三元运算符吗?

分割线

网友回答:

只是因为还没有其他人说出神奇的话:它是空合并运算符。它在 C# 7.12 语言规范的第 3.0 节中定义。

它非常方便,特别是因为它在表达式中多次使用时的工作方式。表单的表达式:

a ?? b ?? c ?? d

如果表达式为非 null,将给出表达式的结果,否则尝试,否则尝试,否则尝试。它在每个点都短路。abcd

此外,如果 的类型不可为空,则整个表达式的类型也不可为空。d

分割线

网友回答:

它是零合并运算符,非常类似于三元(即时 if)运算符。参见 ??操作员 – MSDN。

FormsAuth = formsAuth ?? new FormsAuthenticationWrapper();

扩展到:

FormsAuth = formsAuth != null ? formsAuth : new FormsAuthenticationWrapper();

进一步扩展到:

if(formsAuth != null)
    FormsAuth = formsAuth;
else
    FormsAuth = new FormsAuthenticationWrapper();

在英语中,它的意思是“如果左边的任何东西不为空,那就使用它,否则使用右边的东西。

请注意,您可以按顺序使用任意数量的这些。以下语句会将第一个非 null 分配给(如果所有答案都为 null,则为 null):Answer#AnswerAnswer

string Answer = Answer1 ?? Answer2 ?? Answer3 ?? Answer4;

另外值得一提的是,虽然上面的扩展在概念上是等效的,但每个表达式的结果只计算一次。例如,如果表达式是具有副作用的方法调用,则这一点很重要。(感谢@Joey指出这一点。

分割线

网友回答:

它是空合并运算符。

http://msdn.microsoft.com/en-us/library/ms173224.aspx

是的,除非您知道它叫什么,否则几乎不可能搜索!🙂

编辑:这是另一个问题中的一个很酷的功能。您可以链接它们。

C# 的隐藏功能?

模板简介:该模板名称为【在 C# 中,两个问号在一起是什么意思?】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【C#】栏目查找您需要的精美模板。

相关搜索
  • 下载密码 lanrenmb
  • 下载次数 231次
  • 使用软件 Sublime/Dreamweaver/HBuilder
  • 文件格式 编程语言
  • 文件大小 暂无信息
  • 上传时间 02-08
  • 作者 网友投稿
  • 肖像权 人物画像及字体仅供参考
栏目分类 更多 >
热门推荐 更多 >
微信文章 响应式 html5 微信模板 微信素材 微信公众平台 单页式简历模板 自适应 企业网站 微信图片
您可能会喜欢的其他模板