代码之家  ›  专栏  ›  技术社区  ›  Tony Basallo

检查是否为空,哪个更好?“null==”或“==null”[重复]

  •  2
  • Tony Basallo  · 技术社区  · 16 年前

    笨蛋: Null Difference

    一辈子以前,我偶然看到一篇文章,解释了以下内容不平等(用c表示):

    if (o == null) {}
    if (null == o) {}
    

    文章解释说,后者是首选,因为它导致了更准确的测试。从那以后我就一直这样编码。现在我了解得更多了,我正在寻找这篇文章,或者其他类似的文章,以了解确切的发现是什么,但是我找不到任何关于这个主题的内容。

    思想?有什么区别吗?乍一看会说不,但谁知道在IL和C汇编的内部会发生什么。

    5 回复  |  直到 16 年前
        1
  •  9
  •   Jimmy    16 年前

    阻止你打字是个老习惯 if (o = null) . if(null=o)是一个语法错误。在C中有点无意义,因为空值从未被强制转换为布尔值。

        2
  •  3
  •   Bullines    16 年前

    后者是一个从C/C++的日子,它可以意外地分配值而不是比较。C不允许你这样做,所以要么/要么是可以接受的(但我发现前者更具可读性)。

        3
  •  2
  •   BFree    16 年前

    在C中没有区别。这是一个来自C/C++开发人员的老习惯,以避免一个常见的错误,这是正确的语法:

    if(o = null)
    

    在C语言中,它不会编译,但是在C和C++中,它会给你留下一个非常讨厌的bug。因此,很多人习惯了

    if(null == o)
    
        4
  •  0
  •   Community CDub    7 年前

    与C无关,这是C的。见 this question 进行讨论。

        5
  •  0
  •   Prasanna S    16 年前

    我和Java一起工作,我有一个习惯,在LHS上有常数,用于所有的交换比较。

    "name".equals(name)
    
     null == obj
    
    "55".compareTo(numString)
    

    等等。只是避免不必要的NullPointerException…