C# 6.0 的 ?. 運算子:揭秘空條件特性
C# 6.0 引入了 ?. 運算符,徹底改變了處理空引用的方式。此運算符解決了訪問空物件屬性或呼叫其方法時可能導致運行時異常的常見問題。
?. 運算子的用途
?. 運算符,也稱為「空條件」運算符,具有以下關鍵功能:
用法
?. 運算子的用法很簡單:
<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中文網其他相關文章!