c#nullableタイプと三元演算子:分解型の矛盾
C#では、Nullable型(など)を使用して三元演算子(? :
)を使用すると、エラーが発生する可能性があります。「条件式のタイプは決定できません...」。これは、三元演算子の真および偽の分岐に互換性のないタイプがあるときに発生します。 たとえば、int?
はGetBoolValue() ? 10 : null
10
およびint
が値の存在を表すため、失敗します。 コンパイラは、式の単一のタイプを決定できません。
null
問題は、一貫したリターンタイプに対する3成分演算子の必要性に由来しています。
)に割り当てることができますが、平野は暗黙的にnull
。
int?
これを修正するいくつかの方法を次に示します:int
int?
int?
x = GetBoolValue() ? (int?)10 : null;
:
null
int?
x = GetBoolValue() ? 10 : (int?)null;
default
これらのソリューションは、タイプの一貫性を確保し、コンパイラが3成分式のタイプをdefault
として正しく推測できるようにし、コンパイルエラーを解決します。 コーディングスタイルと読みやすさの好みに最適な方法を選択してください。
以上がなぜ私のC#Ternaryオペレーターは、Nullableタイプで失敗するのですか: `getBoolValue()? 10:null`?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。