c#中的空检查方法

时间:2011-05-05 22:50:11

标签: c# null

  

可能重复:
  Why does one often see “null != variable” instead of “variable != null” in C#?

通过以下方式检查null是否有任何区别:

object x;
// more code to work on x
if (null == x)
   return;

object x;    
// more code to work on x
if (x == null)
   return;

我认为它只是一种风格偏好,并且没有任何错误(代码逻辑或性能),但想要检查。我认为后者更容易阅读,但我的同事坚持以第一种方式编写它。它让我疯了。感谢。

5 个答案:

答案 0 :(得分:5)

  

我认为它只是一种风格偏好

它来自C / C ++世界,显然这个错误很常见:

if (x = null)

因此,它不是比较,而是一个引入潜在微妙错误的任务。这就是他们使用

的原因
if (null = x)

会抛出编译错误。

在C#中,两者都是非法的,所以

if (x == null)

似乎是常见的形式。

答案 1 :(得分:1)

不,没有区别。编译器将阻止您执行if(x = null)(比较操作中的变量赋值),因此执行if (null == x)

没有任何好处

答案 2 :(得分:0)

我更喜欢第二个例子,因为如你所说,它更容易阅读。他们也会这样做。

答案 3 :(得分:0)

由于Michael Stum所说的,我使用

if(null == x) {}

在我的所有代码中。此外,如果比较变量是一个长引用向右延伸页面并且有一个滚动条移动以查看您正在比较的内容,则更有意义。

另一个原因是更容易阅读以查看您所比较的值,即:

if("the answer" == someVariable)

因为“答案”正是您所寻找的,变量名称可能令人困惑,而不是您所寻找的。

答案 4 :(得分:0)

我喜欢第一个,但是很长一段时间以来我一直是C语言的好朋友。根据{{​​1}}的值,第一个可以更具可读性。如果'x'是一个冗长,可怕,丑陋的表达式,那么如果测试表达式的短而简单的常量位于比较运算符的左侧,则更容易理解if语句。如果表达式足够长以包裹多行,则尤其如此 - 您不必在心理上解开表达式,以确定整个事物是对无效性的测试。

x

比其相反的

更容易理解
if ( null == (/*horribly long and convoluted expression*/) )