C# 中的空合并运算符:双问号之谜
在 C# 编程领域,您可能会遇到一个包含两个问号 ("??") 的特殊语法。这个神秘的符号,称为空合并运算符,值得仔细研究。
空合并运算符:概述
空合并运算符 (用 "?? " 表示) 的功能类似于三元 (立即 if) 运算符。它允许您简洁地指定在左侧表达式计算结果为空时使用的备用值。
上下文示例
考虑以下代码片段:
<code class="language-csharp">FormsAuth = formsAuth ?? new FormsAuthenticationWrapper();</code>
此处,空合并运算符用于将 FormsAuth 变量设置为 formsAuth 的值(如果它不为空)或一个新的 FormsAuthenticationWrapper 实例(如果 formsAuth 为空)。
扩展为等效的条件语句
为了更好地理解空合并运算符的行为,我们可以将其扩展为等效的条件语句:
<code class="language-csharp">FormsAuth = formsAuth != null ? formsAuth : new FormsAuthenticationWrapper();</code>
进一步简化
此条件语句可以进一步写成:
<code class="language-csharp">if (formsAuth != null) FormsAuth = formsAuth; else FormsAuth = new FormsAuthenticationWrapper();</code>
因此,空合并运算符实质上充当 if-else 语句的简写,提供了一种简洁的方式来指定备用值。
级联空合并运算符
您可以链接多个空合并运算符来依次检查空值。例如:
<code class="language-csharp">string Answer = Answer1 ?? Answer2 ?? Answer3 ?? Answer4;</code>
此语句将第一个非空 Answer# 赋值给 Answer 变量。如果所有 Answer# 值都为空,则 Answer 变量保持为空。
性能注意事项
需要注意的是,空合并运算符只评估其表达式一次,无论它们是真还是假。在其中一个表达式具有副作用的情况下,这可能是有利的。
以上是C#NULL合并运算符(??)是什么?它如何工作?的详细内容。更多信息请关注PHP中文网其他相关文章!