首页 > 后端开发 > C++ > C# 6.0 的 Null 条件运算符 (?.) 如何防止 NullReferenceExceptions?

C# 6.0 的 Null 条件运算符 (?.) 如何防止 NullReferenceExceptions?

Barbara Streisand
发布: 2025-01-25 15:22:09
原创
303 人浏览过

C# 6.0 Null-Conditional Operator (?.)

C# 6.0 的 ?. 运算符:揭秘空条件特性

C# 6.0 引入了 ?. 运算符,彻底改变了处理空引用的方式。此运算符解决了访问空对象属性或调用其方法时可能导致运行时异常的常见问题。

?. 运算符的用途

?. 运算符,也称为“空条件”运算符,具有以下关键功能:

  • 空值检查: 它评估第一个操作数(例如 a)是否为空。如果 a 为空,则运算符终止评估并返回 null。
  • 成员访问: 如果 a 不为空,则运算符继续评估并访问第一个操作数的成员(例如 a.PropertyOfA)。

用法

?. 运算符的用法很简单:

<code class="language-csharp">if (a?.PropertyOfA != foo) {
   //somecode
}</code>
登录后复制

在上面的示例中,如果 a 为空,则表达式 a?.PropertyOfA 将评估为 null,并且与 foo 的比较将导致 false,从而允许在 if 语句中继续执行,而不会引发空引用异常。

等效性

从概念上讲,?. 运算符可以等同于以下代码:

<code class="language-csharp">if (a != null) {
    a.PropertyOfA;
}
else {
    null;
}</code>
登录后复制

但是,?. 运算符避免了对 a 的冗余评估,并优化了代码的性能。

示例应用

考虑一个场景,您有一个 FileInfo 对象 fi,它可能为空也可能不为空。通过使用 ?. 运算符,您可以避免潜在的异常:

<code class="language-csharp">FileInfo fi = ...; // fi 可能为空
long? length = fi?.Length; // 如果 fi 为空,则 length 将为空</code>
登录后复制

在这种情况下,如果 fi 为空,则 length 将被设置为 null,而不会引发异常。

结论

C# 6.0 中的 ?. 运算符为处理空引用提供了一种优雅而高效的解决方案,使开发人员能够编写更健壮、更简洁的代码。通过在一个表达式中同时提供空值检查和成员访问,它简化了代码结构并提高了程序安全性。

以上是C# 6.0 的 Null 条件运算符 (?.) 如何防止 NullReferenceExceptions?的详细内容。更多信息请关注PHP中文网其他相关文章!

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