在什么情况下,我应该将操作指定为未检查

本文关键字:检查 操作 情况下 我应该 在什么 | 更新日期: 2023-09-27 18:09:41

例如:

int value = Int32.MaxValue;
unchecked
{
    value += 1;
}

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

在什么情况下,我应该将操作指定为未检查

使用unchecked

  • 你想通过溢出来表达一个常量(这在指定位模式时很有用)
  • 你想要算术溢出而不引起错误

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

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