3

我都见过

if(something == null)

if(null == something)

这个空检查发生的顺序有什么不同吗?我没有看到功能上的差异,但很想知道它背后是否有原因。

4

2 回答 2

7

这在 C# 中是合法的,通俗地称为Yoda Condition。C/C++ 世界中的许多人都喜欢这样,因为它在编译时防止意外==替换=。但是,它在 C# 中已经失宠,因为编译器会将它(单个=)标记为该实例中的错误(只要它不是booleaneval)。

于 2013-06-16T23:56:34.017 回答
5

一些程序员更喜欢将常量放在等式运算符的左侧以避免意外(=而不是代替的错字==)。在第二个示例中,有=错字会引入编译器错误,这很容易修复,而在第一个示例中,这样的错字可能会引入一个很难找到的错误。

这种做法直接来自 C 和 C++ 编程风格。我不知道它是否会影响 C#。如果它不再相关,那么它更有可能是一种习惯而不是一种策略。

于 2013-06-16T23:53:04.143 回答