首頁 > 後端開發 > C++ > C#6.0的null條件運算符(?。)如何防止NullReferenceExceptions?

C#6.0的null條件運算符(?。)如何防止NullReferenceExceptions?

Barbara Streisand
發布: 2025-01-25 15:22:09
原創
306 人瀏覽過

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