首頁 >後端開發 >C++ >為什麼我的C#三元運算符因無效類型而失敗:`getBoolValue()? 10:null`?

為什麼我的C#三元運算符因無效類型而失敗:`getBoolValue()? 10:null`?

Barbara Streisand
Barbara Streisand原創
2025-01-28 22:14:11601瀏覽

Why Does My C# Ternary Operator Fail with Nullable Types: `GetBoolValue() ? 10 : null`?

c#無效類型和三元運算符:解決類型不一致

在C#中,使用具有無效類型的三元運算符(

)(例如? :)可能會導致“無法確定條件表達式的類型...”。當三元操作員的真實分支和錯誤分支具有不兼容的類型時,就會發生這種情況。 例如,int?失敗是因為GetBoolValue() ? 10 : null是一個10>,而int表示沒有值。 編譯器無法決定表達式的單一類型。 null>

問題源於三元運營商對一致返回類型的需求。

可以分配給無效的整數(null),而平原int?不能隱式成為int>。 int?以下幾種糾正這一點的方法:

  1. 明確鑄造為無效整數:

    >將整數施放到>:> int?

    <code class="language-csharp">x = GetBoolValue() ? (int?)10 : null;</code>
  2. >顯式null轉換:顯式施放

    null int?

    <code class="language-csharp">x = GetBoolValue() ? 10 : (int?)null;</code>
  3. 使用

    >關鍵字:defaultdefault關鍵字提供了一種類型安全的方法來獲取類型的默認值,這是null>:

    >
    <code class="language-csharp">x = GetBoolValue() ? 10 : default(int?);</code>

這些解決方案確保類型的一致性,從而使編譯器可以正確地將三元表達式的類型正確地推斷為int?,從而解決了編譯誤差。 選擇最適合您的編碼樣式和可讀性首選項的方法。

以上是為什麼我的C#三元運算符因無效類型而失敗:`getBoolValue()? 10:null`?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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