📜  C#check和unchecked关键字

📅  最后修改于: 2020-10-31 04:08:31             🧑  作者: Mango

C#check和unchecked关键字

C#提供了check和unchecked关键字来处理整数类型异常。选中和未选中关键字分别指定了选中上下文和未选中上下文。在检查的上下文中,算术溢出会引发异常,而在未检查的上下文中,算术溢出会被忽略,结果会被截断。

C#check关键字

check关键字用于在编译时显式检查溢出和整数类型值的转换。

首先让我们看一个不使用选中关键字的示例。

C#check关键字示例,未使用check关键字

using System;
namespace CSharpProgram
{
    class Program
    {
        static void Main(string[] args) 
        {
                int val = int.MaxValue;
                Console.WriteLine(val + 2);
        }
    }
}

输出:

-2147483647

可见,以上程序产生错误的结果,并且不会引发任何溢出异常。

C#Checked示例

该程序引发异常并停止程序执行。

using System;
namespace CSharpProgram
{
    class Program
    {
        static void Main(string[] args) 
        {
            checked
            {
                int val = int.MaxValue;
                Console.WriteLine(val + 2);
            }
        }
    }
}

输出:

Unhandled Exception: System.OverflowException: Arithmetic operation resulted in an overflow.

C#Unchecked

Unchecked关键字忽略整数类型算术异常。它不会显式检查并产生可能被截断或错误的结果。

using System;
namespace CSharpProgram
{
    class Program
    {
        static void Main(string[] args) 
        {
            unchecked
            {
                int val = int.MaxValue;
                Console.WriteLine(val + 2);
            }
        }
    }
}

输出:

-2147483647