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++世界,显然这个错误非常普遍:
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 )