代码之家  ›  专栏  ›  技术社区  ›  theburningmonk

确保unsigned int/long始终在C的checked上下文中执行#

  •  3
  • theburningmonk  · 技术社区  · 16 年前

    因此,在我看来,如果某些代码试图违反该约束,那么自然的首选行为是抛出异常,而不是返回最大值(这很容易使重要的数据段处于无效状态,并且不可能恢复……)。

    是否有一个现有的属性可以应用于任何一个类/程序集,以便它总是在选中的上下文中执行算术运算?我正在考虑自己写一个(作为使用PostSharp的一个方面),但如果已经有一个就太好了。

    非常感谢,

    1 回复  |  直到 16 年前
        1
  •  4
  •   Jon Skeet    16 年前

    我看不出无符号整数和有符号整数有什么不同。。。为什么从0到 uint.MaxValue 可能比从地下流出来的更好 int.MinValue int.MaxValue

    如果您希望通过检查编译整个程序集,只需使用 /checked (或 /checked+ 更明确地说)在命令行或Visual Studio中,在“项目属性”下找到“生成”选项卡,单击“高级…”,然后勾选“检查算术上溢/下溢”框。

    我不相信有任何方法可以只为一个特定的班级做这件事。