首頁 > 後端開發 > C++ > C#6.0 null條件運算符(?)如何簡化零處理?

C#6.0 null條件運算符(?)如何簡化零處理?

Patricia Arquette
發布: 2025-01-25 15:26:08
原創
671 人瀏覽過

How Does the C# 6.0 Null-Conditional Operator (?. ) Simplify Null Handling?

C# 6.0 的 ?. 運算符:簡化空值處理

C# 6.0 引入了 ?. 運算符,為空值處理帶來了極大的便利。這個運算符,通常被稱為空條件運算符,提供了一種簡潔且安全的方式來訪問可空對象的屬性或調用其方法。

讓我們來看下面的代碼片段:

<code class="language-csharp">public class A
{
    public string PropertyOfA { get; set; }
}

...

var a = new A();
var foo = "bar";
if (a?.PropertyOfA != foo)
{
    //somecode
}</code>
登入後複製

讓我們分解一下這個運算符的工作原理:

  • 它首先評估第一個操作數 (a),並檢查它是否為空。如果 a 為空,則整個表達式將評估為 null,不會進行進一步的評估。
  • 如果 a 不為空,則繼續評估第二個操作數 (PropertyOfA) 作為 a 的成員訪問。在本例中,它訪問 a 的 PropertyOfA 屬性。
  • 表達式的結果要么是 null 值(如果 a 為空),要么是 a.PropertyOfA 的值。

本質上,?. 運算符充當了防止空引用異常的保護措施。它允許您訪問可空對象的屬性或調用其方法,而不會導致應用程序崩潰。

考慮這種替代語法:

<code class="language-csharp">string bar = (a == null ? null : a.PropertyOfA);
if (bar != foo)
{
    ...
}</code>
登入後複製

雖然這種方法達到了相同的結果,但它涉及單獨的空值檢查和條件賦值。 ?. 運算符提供了一種更簡潔優雅的解決方案。

此外,?. 運算符可以改變表達式的類型。例如,FileInfo.Length 是一個 long 屬性。但是,如果您在其上使用 ?. 運算符:

<code class="language-csharp">FileInfo fi = ...; // fi 可能为空
long? length = fi?.Length; // 如果 fi 为空,length 将为 null</code>
登入後複製

您最終得到一個 long? 類型的表達式,其中問號表示該值可能為空。這消除了對顯式空值檢查的需求,簡化了您的代碼並提高了其可讀性。

以上是C#6.0 null條件運算符(?)如何簡化零處理?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板