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中文網其他相關文章!