我在使用C#编程时遇到了一个问题,当我试图将一个非常大的整数变得更大时,它并没有抛出溢出错误,而是直接将该数字设置为可能的最低值(-2,147,483,648)。
我想知道是否可以在Visual Studio中启用溢出检查功能?
我在使用C#编程时遇到了一个问题,当我试图将一个非常大的整数变得更大时,它并没有抛出溢出错误,而是直接将该数字设置为可能的最低值(-2,147,483,648)。
我想知道是否可以在Visual Studio中启用溢出检查功能?
您可以使用以下步骤在Visual Studio中启用算术溢出/下溢检查:
- 在解决方案资源管理器中右键单击项目,然后选择属性。
- 在构建选项卡上,单击“高级”按钮。 (它在底部)
- 选中“检查算术溢出/下溢”复选框。
这将在溢出发生时引发System.OverflowException
,而不是通常的操作将值更改为最小值。
如果没有启用算术溢出/下溢:
int test = int.MaxValue;
test++;
//Test should now be equal to -2,147,483,648 (int.MinValue)
启用算术溢出/下溢:
int test = int.MaxValue;
test++;
//System.OverflowException thrown
使用 checked 块:
checked
{
int test = int.MaxValue;
test++;
//System.OverflowException thrown
}
checked 的文档可以在此处查看。(感谢 Sasha 提醒我)
checked
关键字将一个语句或一组语句包裹起来,以便明确检查它们是否存在算术溢出。设置项目范围的属性有些风险,因为在很多情况下,溢出是一个相当合理的预期。 - Sasha Goldshteinchecked
或unchecked
上下文的情况。此外,它将影响生成的可执行文件,而不仅仅是在 Visual Studio 中进行调试。有关文档,请参见此处:http://msdn.microsoft.com/en-us/library/h25wtyxf%28v=VS.100%29.aspx - Justin