從C#類型轉換表(http://msdn.microsoft.com/en-us/library/08h86h00.aspx):「縮小轉換也可能導致丟失但是,如果正在轉換的類型的值落在目標類型的MaxValue和MinValue字段指定的範圍之外,則會引發OverflowException,並且運行時會檢查轉換以確保該值的目標類型不超過其MaxValue或MinValue。「c#縮小轉換不會產生異常
所以我期待下面的代碼生成異常:
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.值,我不知道這個值來自我真的不明白爲什麼沒有產生溢出異常。
任何建議,高度讚賞!謝謝。