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

发布于 2024-12-06 21:09:43 字数 121 浏览 3 评论 0原文

例如:

int value = Int32.MaxValue;

unchecked
{
    value += 1;
}

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

For example:

int value = Int32.MaxValue;

unchecked
{
    value += 1;
}

In what ways would this be useful? can you think of any?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

玩物 2024-12-13 21:09:43

在以下情况下使用 unchecked

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

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

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

Use unchecked when:

  • You want to express a constant via overflow (this can be useful when specifying bit patterns)
  • You want arithmetic to overflow without causing an error

The latter is useful when computing a hash code - for example, in Noda Time the project is built with checked arithmetic for virtual everything apart from hash code generation. When computing a hash code, it's entirely normal for overflow to occur, and that's fine because we don't really care about the result as a number - we just want it as a bit pattern, really.

That's just a particularly common example, but there may well be other times where you're really happy for MaxValue + 1 to be MinValue.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文