3
有没有人发现奇怪uint和ulong的默认上下文没有被选中而不是被检查,因为它们是为了表示永远不会被否定的值?确保unsigned int/long始终在C#中选中的上下文中执行
因此,如果一些代码试图违反这个约束,我认为自然和首选的行为是抛出一个异常,而不是返回最大值(这可以很容易地将重要的数据片段置于无效状态,不可能恢复..)。
是否有一个现有属性可以应用于任何类/程序集,以便它始终在已检查的上下文中执行算术运算?我正在考虑自己编写一个(作为使用PostSharp的一个方面),但如果已经有一个,它会很棒。
非常感谢,
完全同意你对有符号整数的看法,这种处理下溢的默认行为看起来很奇怪,你知道它为什么这样设计吗?并感谢关于使整个程序集经过检查编译的提示,这正是我所追求的! :-) – theburningmonk 2010-05-05 10:48:34
@theburningmonk:我相信默认选择是因为它的执行效率比检查的实现要好得多。值得注意的是,您可能需要使用未经检查的块来计算哈希代码,它只是重要的位模式,而不是数量级。 – 2010-05-05 11:26:13