C# 的空合併運算符 (??) 的作用
C# 中的 "??", 即空合併運算符, 提供了一種簡潔的方式來為變量賦值非空值。考慮以下代碼示例:
<code class="language-csharp">FormsAuth = formsAuth ?? new FormsAuthenticationWrapper();</code>
這裡,空合併運算符用於根據以下條件為 FormsAuth
變量賦值:
<code class="language-csharp">FormsAuth = formsAuth != null ? formsAuth : new FormsAuthenticationWrapper();</code>
換句話說,如果 formsAuth
不為空,則將其賦值給 FormsAuth
;否則,創建一個 FormsAuthenticationWrapper
的新實例並將其賦值給 FormsAuth
。這等同於以下條件語句:
<code class="language-csharp">if(formsAuth != null) FormsAuth = formsAuth; else FormsAuth = new FormsAuthenticationWrapper();</code>
這種結構在需要確保變量在使用前已賦值非空值時特別有用。它提供了一種比使用條件語句更簡潔高效的替代方案。
需要注意的是,可以連續使用多個空合併運算符。例如:
<code class="language-csharp">string Answer = Answer1 ?? Answer2 ?? Answer3 ?? Answer4;</code>
在這個例子中,Answer
變量將被賦值為第一個非空的 Answer
值。如果所有 Answer
值都為空,則 Answer
將保持為空。
此外,值得強調的是,雖然空合併運算符的展開形式在概念上是等價的,但每個表達式只會被評估一次。當表達式涉及具有副作用的方法調用時,這一點至關重要。
以上是``?的詳細內容。更多資訊請關注PHP中文網其他相關文章!