checked 关键字用于对整型算术运算和转换显式启用溢出检查。
默认情况下,如果表达式产生的值超出了目标类型的范围,则常数表达式将导致编译时错误,而非常数表达式在运行时计算并将引发异常。不过,如果通过编译器选项或环境配置在全局范围内取消了溢出检查,则可以使用 checked 关键字来启用此项功能。
实例如下:
附代码:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Security.Policy;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp2
{
class OverFlowTest
{
static short x = 32767; // Max short value
static short y = 32767;
// Using a checked expression
static int CheckedMethod()
{
int z = 0;
try
{
//z = (short)(x + y);
//注销上行,使用下行时将提示溢出
z = checked((short)(x + y));
}
// catch (System.OverflowException e)
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
return z;
}
static void Main()
{
Console.WriteLine("Checked output value is: {0}",
CheckedMethod());
Console.ReadLine();
}
}
}
unchecked 关键字用于取消整型算术运算和转换的溢出检查。
在未检查的上下文中,如果表达式产生目标类型范围之外的值,则结果被截断