最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C# checked和unchecked的使用小結(jié)

 更新時間:2025年07月31日 10:38:55   作者:鯉籽鯤  
C#中checked和unchecked控制整型運算溢出檢查,檢查上下文引發(fā)異?;蚓幾g錯誤,下面就來具體介紹一下checked和unchecked的使用,感興趣的可以了解一下

一、概述

  • checked 和 unchecked 語句指定整型類型算術運算和轉(zhuǎn)換的溢出檢查上下文。

  • 當發(fā)生整數(shù)算術溢出時,溢出檢查上下文將定義發(fā)生的情況。

    • 在已檢查的上下文中,引發(fā) System.OverflowException;
    • 如果在常數(shù)表達式中發(fā)生溢出,則會發(fā)生編譯時錯誤。
    • 在未檢查的上下文中,會通過丟棄任何不適應目標類型的高序位來將操作結(jié)果截斷。

二、語句

  • checkedunchecked 語句指定整型類型算術運算和轉(zhuǎn)換的溢出檢查上下文。

具體使用見下面案例:

     	static void Main(string[] args)
        {
            uint a = uint.MaxValue;

            //【一】檢查代碼段 unchecked{ }
            unchecked
            {
                Console.WriteLine(a + 1);  // output: 0
            }

            try
            {
                checked
                {
                    Console.WriteLine(a + 1);
                }
            }
            catch (OverflowException e)
            {
                Console.WriteLine(e.Message);  // output: 算術運算導致溢出。
            }
            //由上可知,當我們使用checked的時候會做溢出檢查,會拋出異常
            // 當我們使用unchecked的時候不會做溢出檢查,不會有異常

        

三、表達式

  • 若要為表達式指定溢出檢查上下文,還可以使用 checked 和 unchecked 運算符

具體使用見下面案例:

    		//【二】檢查表達式 unchecked()
            double d = double.MaxValue;

            int i = unchecked((int)d);
            Console.WriteLine(i);  // output: -2147483648

            try
            {
                i = checked((int)d);
            }
            catch (OverflowException e)
            {
                Console.WriteLine(e.Message);  // output: 算術運算導致溢出。
            }
            Console.ReadLine();
        }

四、本地函數(shù)與 Checked

  • checked 和 unchecked 語句和運算符僅影響以文本形式存在于語句塊或運算符括號內(nèi)的操作的溢出檢查上下文

具體使用見下面案例:

      static void Main(string[] args)
      {
          int Multiply(int a, int b) => a * b;

          int factor = 2;

          try
          {
              checked
              {
                  Console.WriteLine(Multiply(factor, int.MaxValue));  // output: -2
              }
          }
          catch (OverflowException e)
          {
              Console.WriteLine(e.Message);
          }

          try
          {
              checked
              {
                  Console.WriteLine(Multiply(factor, factor * int.MaxValue));
              }
          }
          catch (OverflowException e)
          {
              Console.WriteLine(e.Message);  // output: Arithmetic operation resulted in an overflow.
          }
      }
    internal class Program
    {
        static void Main(string[] args)
        {
            int factor = 2;
            try
            {
                checked
                {
                    Console.WriteLine(Multiply2(factor, int.MaxValue));  // output: -2
                }
            }
            catch (OverflowException e)
            {
                Console.WriteLine(e.Message);
            }

            try
            {
                checked
                {
                    Console.WriteLine(Multiply2(factor, factor * int.MaxValue));
                }
            }
            catch (OverflowException e)
            {
                Console.WriteLine(e.Message); // output: Arithmetic operation resulted in an overflow.
            }
        }

        private static int Multiply2(int a, int b)
        {
            return a * b;
        }
    }

注意,在前面的示例中:

  • 有一個本地函數(shù)Multiply ,一個正常的私有函數(shù)Multiply2
  • 當使用 Console.WriteLine(Multiply2(factor, int.MaxValue)); 這樣的方式調(diào)用 本地函數(shù)Multiply 或私有函數(shù)Multiply2,checked 語句不會引發(fā)任何異常。
  • 當使用 Console.WriteLine(Multiply2(factor, factor * int.MaxValue)); 這樣的方式調(diào)用 本地函數(shù)Multiply 或私有函數(shù)Multiply2,由于第二個參數(shù) 的表達式 會引起 checked 語句的上下文檢查,因此會引發(fā)異常。
      static void Main(string[] args)
      {
          int Multiply(int a, int b) => a * b;

          int factor = 2;

          try
          {
              unchecked
              {
                  Console.WriteLine(Multiply(factor, int.MaxValue));  // output: -2
              }
          }
          catch (OverflowException e)
          {
              Console.WriteLine(e.Message);
          }

          try
          {
              unchecked
              {
                  Console.WriteLine(Multiply(factor, factor * int.MaxValue)); // output: -4
              }
          }
          catch (OverflowException e)
          {
              Console.WriteLine(e.Message);  
          }
      }
  • unchecked 則都不會引發(fā)異常。

參考資料:

已選中和未選中的語句(C# 參考)

到此這篇關于C# checked和unchecked的使用小結(jié)的文章就介紹到這了,更多相關C# checked unchecked 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C#刪除文件夾和文件到回收站示例

    C#刪除文件夾和文件到回收站示例

    本文介紹了C#刪除文件和文件夾到回收站的方法,平時都是使用File.Delete方法刪除文件,這樣刪除之后就真沒有了。下面的代碼可以將文件刪除放到回收站里
    2014-01-01
  • Unity實現(xiàn)微信聊天框界面

    Unity實現(xiàn)微信聊天框界面

    這篇文章主要為大家詳細介紹了Unity實現(xiàn)微信聊天框界面,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • C# 使用SharpZipLib生成壓縮包的實例代碼

    C# 使用SharpZipLib生成壓縮包的實例代碼

    SharpZipLib是一個C#的類庫,主要用來解壓縮Zip,GZip,BZip2,Tar等格式,是以托管程序集的方式實現(xiàn),可以方便的應用于其他的項目之中。本文通過一個實例代碼給大家介紹了C# 使用SharpZipLib生成壓縮包的方法,感興趣的朋友跟隨小編一起看看吧
    2018-09-09
  • C# Telnet協(xié)議實現(xiàn)與源碼解析

    C# Telnet協(xié)議實現(xiàn)與源碼解析

    本文主要介紹了C# Telnet協(xié)議實現(xiàn)與源碼解析,包括創(chuàng)建Socket連接、命令交互、數(shù)據(jù)傳輸和異常處理,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2026-05-05
  • C#調(diào)用OutLokk實現(xiàn)發(fā)送郵件

    C#調(diào)用OutLokk實現(xiàn)發(fā)送郵件

    這篇文章主要為大家詳細介紹了如何利用C#調(diào)用OutLokk實現(xiàn)發(fā)送郵件的功能,文中的示例代碼講解詳細,對我們學習C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-12-12
  • C# 打開藍牙設置界面的兩種方法

    C# 打開藍牙設置界面的兩種方法

    這篇文章主要介紹了C# 打開藍牙設置界面的兩種方法,文中講解非常細致,幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-07-07
  • C#獲取應用程序路徑或Web頁面目錄路徑

    C#獲取應用程序路徑或Web頁面目錄路徑

    這篇文章介紹了C#獲取應用程序路徑或Web頁面目錄路徑的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • C#下listview如何插入圖片

    C#下listview如何插入圖片

    這篇文章主要為大家詳細介紹了C#下listview如何插入圖片,如何在listview中插入圖片的每一個步驟為大家分享,感興趣的朋友可以參考一下
    2016-05-05
  • C#使用itextsharp打印pdf的實現(xiàn)代碼

    C#使用itextsharp打印pdf的實現(xiàn)代碼

    提到打印,恐怕對于很多人都不會陌生,無論是開發(fā)者,還是非計算機專業(yè)的人員都會接觸到打印,?在.NET中實現(xiàn)PDF打印的組件比較多,例如PDFsharp、Report.NET、sharpPDF、itextSharp等等,今天主要簡單的介紹itextSharp組件,需要的朋友可以參考下
    2024-04-04
  • C#創(chuàng)建Excel多級分組的方法

    C#創(chuàng)建Excel多級分組的方法

    這篇文章主要為大家詳細介紹了C#創(chuàng)建Excel多級分組的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12

最新評論

内乡县| 高州市| 东莞市| 乌拉特后旗| 乌拉特中旗| 赣州市| 宁明县| 即墨市| 朝阳县| 太仆寺旗| 封丘县| 太湖县| 如东县| 兰溪市| 乌兰察布市| 新和县| 东乡| 来凤县| 札达县| 仙桃市| 延安市| 古丈县| 时尚| 类乌齐县| 巴里| 乐清市| 敦化市| 怀远县| 新巴尔虎右旗| 尼勒克县| 含山县| 正定县| 宽城| 关岭| 杭锦后旗| 汉源县| 东港市| 遂溪县| 凤台县| 巧家县| 天长市|