首页 > 后端开发 > C++ > C# 8.0 中的'!”(空值宽容)运算符是什么意思?

C# 8.0 中的'!”(空值宽容)运算符是什么意思?

Patricia Arquette
发布: 2025-01-09 10:16:45
原创
977 人浏览过

What Does the `!` (Null-Forgiving) Operator Mean in C# 8.0?

null! 运算符的含义

在 C# 8.0 及其可空引用类型功能中,! 运算符有了新的用途,称为“空值容许运算符”。应用于类型时,此运算符会覆盖值的可空性,使其变为不可空,表示尽管默认情况下是可空的,但 null 被视为“非空”类型。

实际示例

考虑一个类,其中 LastName 属性是可空的,而 MiddleName 属性是不可空的:

<code class="language-csharp">public class Person
{
    public string? LastName { get; set; }
    public string MiddleName { get; set; } = null!;
}</code>
登录后复制

第一行和第二行之间的区别

  • 第一行:LastName 属性是可空的,允许它保存 null 值,由 ? 运算符表示。
  • 第二行:MiddleName 属性是不可空的,由 ! 表示。这意味着它不能保存 null 值。但是,null! 表达式显式地覆盖了此不可空性,并将 null 视为非空值。

技术解释

C# 8.0 引入了“空值安全”,其中所有引用类型默认情况下都是不可空的。要表示可空类型,必须使用 ? 运算符。相反,! 运算符可以应用于可空类型以指示不可空性。

注意事项

  • 避免过度使用:应谨慎使用空值容许运算符,因为它会抵消空值安全的用途。
  • 运行时异常:! 运算符仅禁用编译器级别的检查;如果值为 null,则仍可能发生运行时异常。
  • 有效的用例:尽管有其局限性,但在编译器无法推断值的不可空性、进行旧代码迁移或测试处理 null 时代码的行为时,空值容许运算符可能会有所帮助。

以上是C# 8.0 中的'!”(空值宽容)运算符是什么意思?的详细内容。更多信息请关注PHP中文网其他相关文章!

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