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

C# 在什么情况下,我会将操作指定为未选中?,c#,math,unchecked,C#,Math,Unchecked,例如: int value = Int32.MaxValue; unchecked { value += 1; } 这在哪些方面有用?你能想出什么吗?在下列情况下使用未选中的: 您希望通过溢出来表示常量(这在指定位模式时非常有用) 您希望算术溢出而不导致错误 后者在计算散列代码时非常有用——例如,在项目中,除了生成散列代码外,还使用检查算法构建虚拟一切。当计算散列码时,发生溢出是完全正常的,这很好,因为我们并不真正关心结果作为一个数字-我们只希望它作为一个位模式,真的 这只是一个

例如:

int value = Int32.MaxValue;

unchecked
{
    value += 1;
}

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

在下列情况下使用
未选中的

  • 您希望通过溢出来表示常量(这在指定位模式时非常有用)
  • 您希望算术溢出而不导致错误
后者在计算散列代码时非常有用——例如,在项目中,除了生成散列代码外,还使用检查算法构建虚拟一切。当计算散列码时,发生溢出是完全正常的,这很好,因为我们并不真正关心结果作为一个数字-我们只希望它作为一个位模式,真的


这只是一个特别常见的例子,但在其他情况下,您可能会非常高兴
MaxValue+1
成为
MinValue

应该注意的是
未选中的
是默认设置,因此它是多余的,除非您启用了
选中的
模式。假设:
checked
关键字用于显式启用整型算术运算和转换的溢出检查。默认情况下,[…]如果表达式包含一个或多个非常量值,编译器不会检测到溢出。