C#型変換テーブル(http://msdn.microsoft.com/en-us/library/08h86h00.aspx)から:「変換を絞り込むと、他のデータ型の情報が失われる可能性もあります。ただし、OverflowExceptionは変換される型の値がターゲット型のMaxValueおよびMinValueフィールドで指定された範囲外にある場合にスローされ、変換はランタイムによってチェックされ、ターゲット型の値がMaxValueまたはMinValueを超えないことが確認されます。 。」
したがって、次のコードで例外が生成されることを期待していました。
static void Main() {
int numb1 = 333333333;
short numb2 = (short)numb1;
Console.WriteLine("Value of numb1 is {0}", numb1);
Console.WriteLine("Type of numb1 is {0}", numb1.GetType());
Console.WriteLine("MinValue of int is {0}", int.MinValue);
Console.WriteLine("MaxValue of int is {0}\n", int.MaxValue);
Console.WriteLine("Value of numb2 is {0}", numb2);
Console.WriteLine("Type of numb2 is {0}", numb2.GetType());
Console.WriteLine("MinValue of short is {0}", short.MinValue);
Console.WriteLine("MaxValue of short is {0}", short.MaxValue);
Console.ReadKey();
}
しかし、代わりにnumb2は17237の値を取得します。この値がどこから来ているのかわかりません。また、オーバーフロー例外が生成されなかった理由を本当に理解していません。
どんな提案でも大歓迎です!ありがとう。