顯示轉換可能會丟失數據並且不能在目標類型中同等地表示源值,對於整數類型,C#給我們提供了選擇運行時是否應該在進行類型轉換時檢測結果溢出的能力,這將通過checked運算符和checked語句來實現,如果我們指定一個表達式或一段代碼爲checked,CLR會在轉換產生溢出時拋出一個OverflowException異常,如果代碼不是checked,轉換會繼續而不管是否產生溢出。
checked、unchecked運算符:
class Program
{
static void Main(string[] args)
{
ushort sh = 2000;
byte sb;
sb = unchecked((byte)sh);
Console.WriteLine(sb); //208
sb = checked((byte)sh); //此處拋出異常
}
}
checked、unchecked語句:
class Program
{
static void Main(string[] args)
{
ushort sh = 2000;
byte sb;
unchecked
{
sb = ((byte)sh);
Console.WriteLine(sb); //208
}
checked
{
sb = checked((byte)sh); //此處拋出異常
}
}
}