int a = 1;
int? b = a;
Console.WriteLine(b);
上記のスニペットが細かく、int?
に直接int
を変換する、明示的な変換はC#:なぜintから<Nullable> intへの明示的な変換ですか?
を必要としないが、
List<int> temp = new List<int>{1};
int? valueVariable = temp!=null && temp.Count>0 ? temp[0] : null ;
Console.WriteLine(valueVariable);
は時間のコンパイルエラーになります。私たちは、同じことが第一の例のために働いたが、我々は、ここでは、鋳造に必要なのはなぜint?
// Working Snippet with int? casting
int? valueVariable = temp!=null && temp.Count > 0 ? (int?) temp[0] : null ;
https://dotnetfiddle.net/0x7ckL
にキャストする必要があり、この問題を解決するために
?
最初のケースでは、プリミティブ型を参照型に移動しているためです。 2番目のケースでは逆のことをしています。参照型を要求されたプリミティブ値に直接変換することはできません。 –
ここには参照型はありません。 'null'は型を持たず、参照型を伴わずにnull値型の良いデフォルト値です。 –