c#你需要检查某些东西是否有值以及某些东西是否大于0?

egu*_*iar 18 c# if-statement

在一个项目上工作,编码员在他的支票上做了很多.首先,他检查可空int是否有值,然后检查它是否大于0.为什么?为什么要进行两次检查,如果一次检查 - 如果大于0 - 应该足够吗?因为空值不大于0所以......这是多余的吗?

不确定这是否是我在这里问的问题,但我不知道如何在谷歌搜索中说出来,所以也许我不知道这个程序员做了什么.

Mar*_*ers 23

代码可能是多余的.

如果我是int?那么:

if (i.HasValue && i.Value > 0)
Run Code Online (Sandbox Code Playgroud)

相当于:

if (i > 0)
Run Code Online (Sandbox Code Playgroud)

来自MSDN:

当您使用可空类型进行比较时,如果其中一个可空类型的值为null而另一个不是,则除了!=(不等于)之外,所有比较都会计算为false.重要的是不要假设因为特定比较返回false,相反的情况返回true.在以下示例中,10不大于,小于或等于null.只有num1!= num2的计算结果为true.

  • @ user1274649:如果他抱怨你的代码不正确*那么他就错了,你可以向他展示MSDN页面来证明它.如果他抱怨它不是美学/可读/可维护*那么这是一个品味问题.如果他是老板,你可能必须尊重他的决定.无论哪种方式,如果他是那种对这些事情感到不安的人,那么机智可能是个好主意. (5认同)