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

标签 c# math unchecked

例如:

int value = Int32.MaxValue;

unchecked
{
    value += 1;
}

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

最佳答案

在以下情况下使用unchecked:

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

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

这只是一个特别常见的示例,但在其他情况下您可能真的很高兴 MaxValue + 1 变为 MinValue

关于c# - 在什么情况下我会将操作指定为未选中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7569055/

相关文章:

c# - 使用 LINQ 从两个列表中获取所有可能的连接对

c# - 用于处理 azure 服务总线队列中的消息处理的选项

c# - 将字符串数组转换为 JArray

algorithm - 您如何将代码表示为用于运行时分析的数学算法?

intellij-idea - IntelliJ说 “Warning: java: foo/bar/Baz.java uses unchecked or unsafe operations”,但是没有说它指的是哪一行

c# - 如何在 C# MVC 3 中返回空白 View

algorithm - 模拟时钟的最短路径算法

algorithm - 您如何找到距直线给定垂直距离的点?

Java 未经检查的操作转换为泛型