溢出檢測checked、unchecked

顯示轉換可能會丟失數據並且不能在目標類型中同等地表示源值,對於整數類型,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);  //此處拋出異常
            }
        }
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章