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,则仍可能发生运行时异常。以上是C# 8.0 中的'!”(空值宽容)运算符是什么意思?的详细内容。更多信息请关注PHP中文网其他相关文章!