``?

Linda Hamilton
Linda Hamilton原創
2025-01-29 07:41:09191瀏覽

C# Null Coalescing Operator (??)

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

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