为什么在 if 语句中使用 != null?

Why use != null in if statements?

我有 C/C++ 背景,最近开始了一份新工作,从事 C# 工作。我在网上的很多代码和示例中发现人们在 if 语句中使用此约定

if(obj != null)

我记得有人告诉我要尽可能避免使用负逻辑。那么为什么不像

if(obj)

改用了?是否有规定使用前一种编码风格的代码标准?我认为这两个陈述的评价相同,但也许它们的评价不同?

非常感谢任何意见。

简单的事实是,C# 并使用 真正的布尔类型。 if 需要一个布尔值。因此,如果 obj 不是布尔值,则 if(obj) 是一个语法错误。

if 表达式必须是 布尔值 。假设我有一个字符串:

string test = null;

if (test) 不会编译,因为 test 不是 bool。它只是 return 的字符串引用。因此,要检查 null,您实际上 必须检查 null:

if (test != null) 是一个表达式,它 return 一个布尔值,因此编译,并且是检查 null 的标准方法。