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

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

Barbara Streisand
發布: 2025-01-28 22:14:11
原創
598 人瀏覽過

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?

    1

    x = GetBoolValue() ? (int?)10 : null;

    登入後複製
  2. >顯式null轉換:顯式施放

    null int?

    1

    x = GetBoolValue() ? 10 : (int?)null;

    登入後複製
  3. 使用

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

    >

    1

    x = GetBoolValue() ? 10 : default(int?);

    登入後複製

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

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

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板