首頁 >後端開發 >C++ >C#NULL合併運算符(??)是什麼?它如何工作?

C#NULL合併運算符(??)是什麼?它如何工作?

DDD
DDD原創
2025-01-29 08:15:10378瀏覽

What is the C# Null Coalescing Operator (??) and How Does it Work?

C# 中的空合併運算符:雙問號之謎

在 C# 編程領域,您可能會遇到一個包含兩個問號 ("??") 的特殊語法。這個神秘的符號,稱為空合併運算符,值得仔細研究。

空合併運算符:概述

空合併運算符 (用 "?? " 表示) 的功能類似於三元 (立即 if) 運算符。它允許您簡潔地指定在左側表達式計算結果為空時使用的備用值。

上下文示例

考慮以下代碼片段:

<code class="language-csharp">FormsAuth = formsAuth ?? new FormsAuthenticationWrapper();</code>

此處,空合併運算符用於將 FormsAuth 變量設置為 formsAuth 的值(如果它不為空)或一個新的 FormsAuthenticationWrapper 實例(如果 formsAuth 為空)。

擴展為等效的條件語句

為了更好地理解空合併運算符的行為,我們可以將其擴展為等效的條件語句:

<code class="language-csharp">FormsAuth = formsAuth != null ? formsAuth : new FormsAuthenticationWrapper();</code>

進一步簡化

此條件語句可以進一步寫成:

<code class="language-csharp">if (formsAuth != null)
    FormsAuth = formsAuth;
else
    FormsAuth = new FormsAuthenticationWrapper();</code>

因此,空合併運算符實質上充當 if-else 語句的簡寫,提供了一種簡潔的方式來指定備用值。

級聯空合併運算符

您可以鏈接多個空合併運算符來依次檢查空值。例如:

<code class="language-csharp">string Answer = Answer1 ?? Answer2 ?? Answer3 ?? Answer4;</code>

此語句將第一個非空 Answer# 賦值給 Answer 變量。如果所有 Answer# 值都為空,則 Answer 變量保持為空。

性能注意事項

需要注意的是,空合併運算符只評估其表達式一次,無論它們是真還是假。在其中一個表達式具有副作用的情況下,這可能是有利的。

以上是C#NULL合併運算符(??)是什麼?它如何工作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn