14

例如:

int value = Int32.MaxValue;

unchecked
{
    value += 1;
}

这在哪些方面有用?你能想到什么吗?

4

1 回答 1

25

在以下情况下使用unchecked

  • 你想通过溢出来表达一个常数(这在指定位模式时很有用)
  • 您希望算术溢出而不会导致错误

后者在计算哈希码时很有用 - 例如,在Noda Time中,该项目是使用检查算法构建的,用于除哈希码生成之外的虚拟所有内容。在计算哈希码时,发生溢出是完全正常的,这很好,因为我们并不真正关心结果是一个数字——我们只希望它是一个位模式,真的。

这只是一个特别常见的例子,但很可能还有其他时候你真的很高兴MaxValue + 1成为MinValue.

于 2011-09-27T12:27:36.823 回答