无涯教程-C# - checked/unchecked

45 阅读1分钟

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

C# Checked关键字

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

让无涯教程首先来看一个不使用Checked关键字的示例。

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

输出:

-2147483647

请看,上面的程序产生了错误的结果,并且没有抛出任何溢出异常。

此程序抛出异常并停止程序执行。

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# UnCheck关键字

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

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

输出:

-2147483647

参考链接

www.learnfk.com/csharp/c-sh…