程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#入門之checked和unchecked的差別實例解析

C#入門之checked和unchecked的差別實例解析

編輯:C#入門知識

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved