ホームページ > バックエンド開発 > C++ > なぜ私のC#Ternaryオペレーターは、Nullableタイプで失敗するのですか: `getBoolValue()? 10:null`?

なぜ私のC#Ternaryオペレーターは、Nullableタイプで失敗するのですか: `getBoolValue()? 10:null`?

Barbara Streisand
リリース: 2025-01-28 22:14:11
オリジナル
630 人が閲覧しました

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

c#nullableタイプと三元演算子:分解型の矛盾

C#では、Nullable型(

など)を使用して三元演算子(? :)を使用すると、エラーが発生する可能性があります。「条件式のタイプは決定できません...」。これは、三元演算子の真および偽の分岐に互換性のないタイプがあるときに発生します。 たとえば、int?GetBoolValue() ? 10 : null 10およびintが値の存在を表すため、失敗します。 コンパイラは、式の単一のタイプを決定できません。 null問題は、一貫したリターンタイプに対する3成分演算子の必要性に由来しています。

はnullable整数(

)に割り当てることができますが、平野は暗黙的にnullint?これを修正するいくつかの方法を次に示します:int int?

nullable整数への明示的なキャスト:
    整数をリテラルにキャスト
  1. int?

    x = GetBoolValue() ? (int?)10 : null;
    ログイン後にコピー
    明示的なnull変換:
  2. 明示的に
  3. から

    null int?

    x = GetBoolValue() ? 10 : (int?)null;
    ログイン後にコピー
    キーワードを使用する:
  4. キーワードは、型のデフォルト値を取得するためのタイプセーフの方法を提供します。

    default これらのソリューションは、タイプの一貫性を確保し、コンパイラが3成分式のタイプをdefaultとして正しく推測できるようにし、コンパイルエラーを解決します。 コーディングスタイルと読みやすさの好みに最適な方法を選択してください。

以上がなぜ私のC#Ternaryオペレーターは、Nullableタイプで失敗するのですか: `getBoolValue()? 10:null`?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート