そのため、C# の三項演算子における型変換と型の推論の基礎を理解しています。これは主に、この質問に対する Eric Lippert の回答のおかげです。しかし、私がまだ理解していないのは、私が以下に持っているものです。
C# はゼロが an であると想定していることを理解していると思います。これが何らかの形でデフォルトであるため、変数int
に an を代入しようとするとエラーがスローされます。int
short
short recordNumber = Convert.IsDBNull(dr["record_number"]) ? 0
: Convert.ToInt16(dr["record_number"]);
このエラーがスローされます:
Cannot implicitly convert type 'int' to 'short'.
An explicit conversion exists (are you missing a cast?)
これはVS10が探しているものです:
short recordNumber = Convert.IsDBNull(dr["record_number"]) ? (short)0
: Convert.ToInt16(dr["record_number"]);
私が理解しようとしているのは、なぜではなく0 が選択されるのかということです。int
short
それが選択された場合、それはshort
より普遍的に「割り当て可能」になります。私が行方不明になっている理由はありますか?