在阅读源码时,发现有段代码为 unchecked包括,单忽然忘记了 unchecked是干什么的了,遇事不决问google,将此纪录一下,以便温习。
首先,来简单说一下他们的作用:
checked:打开运算溢出检查
unchecked:关闭运算溢出检查
首先,要知道int类型在C#中是一个32位的数,由此可以知道int类型的取值范围是 -2147483648~2147483647,当要使用int的最小值或最大值时,可以使用int.MinValue和int.MaxValue这两个属性。
在这里,我们要讨论的也是int类型溢出,事实上,当int型中的最大+1就会变成最小值,当我们希望这个int值不会超过限制时,可以通过手动启用溢出检查功能。
如何启动呢?
在VS中是允许设置项目属性来启用或禁止运算溢出检查的。解决方案资源管理器=>右击选择属性=>在属性对话框选择生成=>单机右下角的高级=>在高级对话框中,勾选【检查算数溢出】选项,如下图所示
同样的道理,在代码中,可以使用unchecked和checked关键字,来选择性的打开和关闭代码中一个特定部分的整数溢出检查,这些关键字将覆盖项目的编译器选项。
使用了unchecked就不会强制检查溢出的代码块,也就不会抛出OverflowException这个异常了。
需要注意的是:只有在checked块中的整数运算才会检查,对于块中的方法调用,不会检查所调用方法中的整数运算。