Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
有没有人觉得奇怪的是 uint 和 ulong 的默认上下文未检查而不是检查,因为它们旨在表示永远不会为负的值?
因此,如果某些代码试图违反该约束,在我看来,自然和首选的行为将是抛出异常而不是返回最大值(这很容易使重要的数据片段处于无效状态并且无法恢复。 .)。
是否存在可应用于任一类/程序集的现有属性,以便它始终在检查的上下文中执行算术运算?我正在考虑自己写一个(作为使用 PostSharp 的一个方面),但如果已经有一个就好了。
非常感谢,
我看不出这里的无符号整数与有符号整数有什么不同......为什么从 0 到下溢uint.MaxValue可能比从int.MinValueto下溢更好int.MaxValue?
uint.MaxValue
int.MinValue
int.MaxValue
如果您希望通过检查编译整个程序集,只需在命令行或 Visual Studio 中使用/checked(或/checked+更明确地说),在项目属性下找到“构建”选项卡,单击“高级...”并勾选“检查算术上溢/下溢”框。
/checked
/checked+
我不相信有任何方法可以仅针对特定课程执行此操作。