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中文網其他相關文章!