C# 中的空检查方法

本文关键字:检查 方法 | 更新日期: 2023-09-27 17:55:35

可能的重复项:
为什么在 C# 中经常看到"null != 变量"而不是"变量 != null"?

通过以下方式检查 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;

我认为这只是一种风格偏好,没有任何问题(代码逻辑或性能),但想检查一下。我认为后者更容易阅读,但我的同事坚持用第一种方式写。这让我发疯。谢谢。

C# 中的空检查方法

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

它是的,它来自C/C++世界,显然这个错误非常普遍:

if (x = null)

因此,它不是比较,而是引入潜在微妙错误的作业。这就是为什么他们使用

if (null = x)

这将引发编译器错误。

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

if (x == null)

似乎是常见的形式。

不,没有区别。 编译器也会阻止你执行if(x = null)(比较操作中的变量赋值),因此执行if (null == x)没有任何好处

我更喜欢第二个例子,因为正如你所说,它更容易阅读。 他们将执行相同的操作。

因为迈克尔·斯塔姆说的,我用

if(null == x) {}

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

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

if("the answer" == someVariable)

因为"答案"是你要找的,所以变量名称可能会令人困惑,而不是你要找的。

我喜欢

第一个,但后来我和C语言是很久很久的好朋友。根据x的值,第一个可以更具可读性。如果 'x' 是一个长而可怕、丑陋的表达式,那么如果测试表达式所依据的简短、简单、常量位于比较运算符的左侧,则更容易理解 if 语句。如果表达式足够长以换行几行,则尤其如此 - 您不必在精神上展开表达式来理解整个事情都是对空性的测试。

if ( null == (/*horribly long and convoluted expression*/) )

比反之更容易理解

if ( (/*horribly long and convoluted expression*/) == null )