首頁 > 後端開發 > C++ > C#6.0的無效操作員(?)背後的奧秘是什麼?

C#6.0的無效操作員(?)背後的奧秘是什麼?

Susan Sarandon
發布: 2025-01-25 15:43:11
原創
875 人瀏覽過

What's the Mystery Behind C# 6.0's Null-Conditional Operator (?.)?

C# 6.0 問號點運算符的奧秘

C# 6.0 中引入的 ?. 運算符引起了開發人員的興趣。讓我們來揭開它神秘的面紗:

它的作用:

?. 運算符被稱為“空條件”運算符。它允許您安全地訪問可能為空的對象的屬性或調用其方法,而不會導致惱人的 NullReferenceException 異常。

工作原理:

?. 運算符評估第一個操作數。如果它是 null,則表達式停止並返回 null。但是,如果第一個操作數不為 null,則它將繼續評估第二個操作數,作為第一個操作數的成員訪問。

示例:

考慮以下代碼片段:

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

...

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

在這裡,如果 a 為 null,a?.PropertyOfA 將優雅地返回 null,而不是拋出異常。這允許您使用字符串的 == 運算符將其與 foo 進行比較,並在沒有任何問題的情況下繼續執行 if 語句。

等效代碼:

?. 運算符可以被認為是以下代碼的簡寫版本:

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

類型注意事項:

值得注意的是,?. 運算符還可以改變表達式的類型。例如,FileInfo.Length 是 long 類型的屬性。但是,使用 ?. 將導致 long? 類型的表達式:

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

以上是C#6.0的無效操作員(?)背後的奧秘是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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