1

重複の可能性:
暗黙の int なし -> 三項ステートメントでの short 変換

そのため、C# の三項演算子における型変換と型の推論の基礎を理解しています。これは主に、この質問に対する Eric Lippert の回答のおかげです。しかし、私がまだ理解していないのは、私が以下に持っているものです。

C# はゼロが an であると想定していることを理解していると思います。これが何らかの形でデフォルトであるため、変数intに an を代入しようとするとエラーがスローされます。intshort

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 が選択されるのかということです。intshort それが選択された場合、それはshortより普遍的に「割り当て可能」になります。私が行方不明になっている理由はありますか?

4

0 に答える 0