使用<=而不是==与MinValue进行比较

jba*_*all 1 .net c#

我刚刚遇到以下代码行:

if(someInt <= int.MinValue) { /* ... */ }
Run Code Online (Sandbox Code Playgroud)

我想知道我是否遗漏了一些微妙的东西,这使得<=比较更直观的比较更好地使用==比较?

Jas*_*ams 9

这是循环中使用的常用方法 - 而不是(例如)

if (value == max)
    break;
Run Code Online (Sandbox Code Playgroud)

使用

if (value >= max)
    break;
Run Code Online (Sandbox Code Playgroud)

虽然您知道值"永远不应该"大于max,但如果程序逻辑的某些部分错误,并且值传递为(max + 12),会发生什么?第一种情况将尝试在32位系统上循环40亿次; 第二种情况会在它意识到你已经超过"最大"位置时立即退出.

因此,它是一种更健壮的方式来说同样的事情,因为当一切设置正确时它会起作用,但是当某人搞砸时它也会起作用(或者至少不会发生灾难性的失败).处理器可以在= =内部类型的同时执行= =,因此没有性能差异.

但是,在比较Int和Int.MinValue时使用<=是多余的(虽然无害),因为在技术上不可能使值小于Int中的值.当然,Int64仍然可以小于Int32.MinValue.

所以我认为这是编码员的"习惯力".或者他们不信任Int.MinValue返回最小值:-)


Eri*_*ith 5

这是int的最小可能值,似乎没有什么可错过的.使用最直观地读取的代码.

  • 这是==恕我直言, (2认同)
  • 直到当然someInt更改为someInt64. (2认同)

Eli*_*kan 5

此外,如果someInt将某一天更改为a ,则可能有意义long.