首頁 > 後端開發 > 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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板