有没有人觉得奇怪,uint 和 ulong 的默认上下文是未检查的,而不是检查的,因为它们旨在表示永远不能为负的值?
因此,如果某些代码试图违反该约束,在我看来,自然且首选的行为是抛出异常,而不是返回最大值(这很容易使重要数据处于无效状态并且无法恢复)。 .)。
是否存在可应用于任一类/程序集的现有属性,以便它始终在检查的上下文中执行算术运算?我正在考虑自己写一个(作为使用 PostSharp 的一个方面),但如果已经有一个那就太好了。
非常感谢,
我不明白这里无符号整数与有符号整数有什么不同...为什么从 0 下溢到uint.MaxValue
可能比下溢更好int.MinValue
to int.MaxValue
?
如果您希望通过检查来编译整个程序集,只需使用/checked
(or /checked+
更明确地说)在命令行或 Visual Studio 中,在项目属性下找到“生成”选项卡,单击“高级...”并勾选“检查算术溢出/下溢”框。
我不相信有任何方法可以只针对特定类别执行此操作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)