C#入門之checked和unchecked的差別實例解析。本站提示廣大學習愛好者:(C#入門之checked和unchecked的差別實例解析)文章只能為提供參考,不一定能成為您想要的結果。以下是C#入門之checked和unchecked的差別實例解析正文
本文以實例情勢比較測試了C#中checked和unchecked的差別,關於C#初學者來講有很好的自創參考價值。詳細剖析以下:
int類型的最年夜值是2147483647,2個最年夜值相加就會超越int的最年夜值,即湧現溢出。
class Program { static void Main(string[] args) { int y = 2147483647; int x = 2147483647; int z = x + y; Console.WriteLine(z.ToString()); Console.ReadKey(); } }
把斷點打在 int z = x + y;代碼行,單步驟試,可以看到z的值為-2。由於int類型的最年夜值是2147483647,x + y超越了最年夜值,湧現了溢出。
法式運轉後果以下圖所示:
1、應用checked:
假如我們想讓編譯器幫我們斷定能否溢出,就應用checked症結字。
class Program { static void Main(string[] args) { int y = 2147483647; int x = 2147483647; int z = checked(x + y); } }
運轉後拋出溢出異常,運轉成果以下圖所示:
假如我們想手動捕捉並打印異常,應當如許寫:
class Program { static void Main(string[] args) { int y = 2147483647; int x = 2147483647; try { int z = checked(x + y); } catch (OverflowException ex) { Console.WriteLine(ex.Message); } Console.ReadKey(); } }
運轉成果以下圖所示:
2、應用unchecked:
應用unchecked不會拋出溢出異常。
class Program { static void Main(string[] args) { int y = 2147483647; int x = 2147483647; int z = unchecked(x + y); Console.WriteLine(z.ToString()); Console.ReadKey(); } }
成果為:-2