在什么情况下我会将操作指定为未选中?

时间:2011-09-27 12:25:21

标签: c# math unchecked

例如:

int value = Int32.MaxValue;

unchecked
{
    value += 1;
}

这会有什么用处?你能想到吗?

1 个答案:

答案 0 :(得分:25)

在以下时间使用unchecked

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

后者在计算哈希码时非常有用 - 例如,在Noda Time中,除了哈希码生成之外,项目是使用经过检验的算法构建的。在计算哈希码时,溢出发生是完全正常的,这很好,因为我们并不真正关心数字的结果 - 我们只是想把它当作一个位模式,真的。 / p>

这只是一个特别常见的例子,但在其他时候您可能会对MaxValue + 1 MinValue感到高兴。