在c#区别(user == null)和(null == user)

Roh*_*nsi 4 c#

可能重复:
(0 ==变量)或(null == obj):C#中过时的练习?
为什么在C#中经常会看到"null!= variable"而不是"variable!= null"?

我见过很多次人们将null评估为变量而不是将变量评估为null.

if(null== user)
Run Code Online (Sandbox Code Playgroud)

代替

if(user==null)
Run Code Online (Sandbox Code Playgroud)

我知道两者都试图实现相同的功能.所以,它是一些标准还是纯粹的个人偏好.请评论.

Bri*_*sen 22

user == null 是人类说话.

null == user 是尤达说话.

对于编译器它们是相同的,所以选择你最熟悉的那个.


Noo*_*ilk 6

不,没有区别.

你使用前者是因为有时候,在某些语言中,意外分配会导致'true'(例如JavaScript).

所以你更喜欢在左边编写常量,这样编译时间(如果你有,JavaScript显然没有)错误,或者充其量是运行时错误,而不仅仅是一个错误.


dfa*_*dfa 6

我认为这null == user是C/C++世界的最佳实践.

它可以防止错字:

if (user = null) {
Run Code Online (Sandbox Code Playgroud)

发生了,因为他们默默地过去了,他们非常危险.使用null = user在C/C++中更安全(但在C#中没有,因为编译器会抱怨),因为编译器无法编译它.

  • 但是小心,C#编译器不会抱怨这个:`bool a; if(a = true){}` (2认同)

ozc*_*cho 5

if(user == null)更容易阅读


小智 5

我所知道的...

null == object将是一个参考比较.object == null可能会重载.