好的,我们知道以下两行是等价的 -
(0 == i)(i == 0)此外,过去鼓励使用第一种方法,因为如果您不小心使用'='而不是'==',那么编译器就会给出错误消息.
我的问题是 - 在今天的一代漂亮的IDE和智能编译器中,你还推荐第一种方法吗?
特别是,当我看到以下代码时,这个问题突然出现在我脑海中 -
if(DialogResult.OK == MessageBox.Show("Message")) ...
Run Code Online (Sandbox Code Playgroud)
在我看来,我绝不会推荐上述内容.任何第二意见?
在C++中,我们通常检查指针是否为null,我只知道我们应该使用
if(NULL == ptr)
Run Code Online (Sandbox Code Playgroud)
代替:
if(ptr == NULL)
Run Code Online (Sandbox Code Playgroud)
我想知道为什么?
在additiol中,如果我们想将ptr初始化为null,我们应该使用ptr = NULL还是ptr = 0?是的,我知道在C++中,我们通常使用ptr = nullptr,我想知道为什么我们这样做只是想统一代码?谢谢
所以长话短说.一位教授在课堂上将这个问题作为一个讨论启动者.除了明显的
B = new SomeClass("B"); // But B can be null, can can be new SomeClass("A");
A = new SomeClass("A");
A==B
Run Code Online (Sandbox Code Playgroud)
在比较时会保证没有NPE,使用B == A而不是A == B的原因是什么?
A和B的类型相同,这与语言无关.因此,您可以假设Java的A.equals(B),或者C或C++中的等效语法等....
不,这不是功课.
我看到一些开发人员在C#中使用以下空对象检查:
if (null == myObject)
{
}
Run Code Online (Sandbox Code Playgroud)
而不是:
if (myObject == null)
{
}
Run Code Online (Sandbox Code Playgroud)
我更喜欢第二个陈述,因为它从左到右自然地(对我而言).
有没有理由说明为什么使用第一个?有任何性能优势,还是纯粹的味道?
我见过很多次人们使用if(condition)as if(0==x)而不是if(x==0).它被认为是一种很好的做法,但有人可以解释为什么这样做?它有什么不同?相反,它在我看来降低了可读性.