C#溢出不起作用?如何启用溢出检查?

17 .net c# exception overflow visual-studio

我正在使用C#,并注意到当我有一个非常大的整数并试图使它变大.而是抛出某种类型的溢出错误,它只是将数字设置为我认为的最低可能值(-2,147,483,648).

我想知道是否有办法在Visual Studio中启用溢出检查?

Rio*_*ams 31

您可以使用以下步骤在Visual Studio中启用算术溢出/下溢检查:

  1. 在Solution Explorer中右键单击您的项目,然后选择Properties.
  2. 在"生成"选项卡上,单击"高级"按钮.(它在底部)
  3. 选中"检查算术溢出/下溢"复选框.

这将System.OverflowException在溢出发生时抛出,而不是通常将值更改为最小值的操作.

未启用算术溢出/下溢:

int test = int.MaxValue;
test++;
//Test should now be equal to -2,147,483,648 (int.MinValue)
Run Code Online (Sandbox Code Playgroud)

启用算术溢出/下溢:

int test = int.MaxValue;
test++;
//System.OverflowException thrown
Run Code Online (Sandbox Code Playgroud)

使用选中的块:

checked
{
    int test = int.MaxValue;
    test++;
    //System.OverflowException thrown
}
Run Code Online (Sandbox Code Playgroud)

在此处获取已检查的文档.(感谢Sasha提醒我这件事.)

  • 您还可以使用`checked`关键字来包装语句或一组语句,以便明确检查算术溢出.设置项目范围的属性有点冒险,因为溢出通常是一个相当合理的期望. (12认同)
  • 请注意,如果只需要检查表达式的一部分,而不是整个语句或语句组,也可以在*expression*上下文中使用"checked". (4认同)
  • 请注意,此编译器选项仅适用于代码中没有明确的`checked`或`unchecked`上下文.此外,它将影响生成的可执行文件,而不仅仅是在Visual Studio中进行调试.请参阅此处获取文档:http://msdn.microsoft.com/en-us/library/h25wtyxf%28v=VS.100%29.aspx (2认同)