条件演算子の 2 番目と 3 番目のオペランドとして、より狭い null 許容値とより広い数値を組み合わせると、C# で予期しない結果が得られます。これは機能しませんが、より広い数値が int 型の定数式であり、より狭い nullable が SByte 型である場合は機能しますか? またはInt16?デモ:
bool test = true;
Int16? aShort = 5;
Int32 anInt = 5;
const Int32 aConstInt = 4;
Object o1 = test ? aShort : anInt; // does not compile
Object o2 = test ? aShort : aConstInt; // does compile
私の質問は、私のintが定数の場合、なぜコンパイルされるのですか? そして、C# 言語仕様でこれへの参照を見つけることができません。ここで何が起こっているのでしょうか?