【问题标题】:C# Overflow not Working? How to enable Overflow Checking?C# 溢出不起作用?如何启用溢出检查?
【发布时间】:2011-02-02 18:52:23
【问题描述】:

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

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

【问题讨论】:

    标签: c# .net visual-studio exception overflow


    【解决方案1】:

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

    1. 在解决方案资源管理器中右键单击您的项目并选择属性。
    2. 在“构建”选项卡上,单击“高级”按钮。 (朝向底部)
    3. 选中“检查算术上溢/下溢”复选框。

    这将在发生溢出时抛出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
    {
        int test = int.MaxValue;
        test++;
        //System.OverflowException thrown
    }
    

    checked 的文档在here. 可用(感谢 Sasha 提醒我。

    【讨论】:

    • 您还可以使用checked 关键字来包装一个语句或一组语句,以便显式检查它们是否存在算术溢出。设置项目范围的属性有点冒险,因为溢出通常是一个相当合理的预期。
    • 请注意,此编译器选项仅在代码中没有明确的 checkedunchecked 上下文时适用。此外,它还会影响生成的可执行文件,而不仅仅是在 Visual Studio 中进行调试。有关文档,请参见此处:msdn.microsoft.com/en-us/library/h25wtyxf%28v=VS.100%29.aspx
    • @Rionmonster 和@Sasha - 我不知道这两个功能中的任何一个。感谢两者。
    • 好点 Sasha - 我只是在检查声明上拉了一个简短的博客 :) 链接很快就会出现。
    • 请注意,如果您只想检查表达式的一部分,而不是检查整个语句或语句组,也可以在 expression 上下文中使用“checked”。
    猜你喜欢
    • 1970-01-01
    • 2011-01-24
    • 2014-08-10
    • 2021-10-07
    • 1970-01-01
    • 2015-01-14
    • 2014-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多