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

Jos*_*osh -9 c# null if-statement coding-style

我来自C/C++背景,最近开始从事C#工作的新工作.我在很多代码和例子中找到了人们在if语句中使用这个约定

if(obj != null)
Run Code Online (Sandbox Code Playgroud)

我记得被告知要尽可能避免使用否定逻辑.那么为什么不是这样的呢

if(obj)
Run Code Online (Sandbox Code Playgroud)

用来代替?是否存在使用前一种编码方式的代码标准?我认为这两个陈述的评价相同,但也许他们的评价不同?

任何输入都非常感谢.

nvo*_*igt 6

简单的事实是,C#具有并使用真正的布尔类型.一个if期望一个布尔值.if(obj)如果obj不是布尔值,那么语法错误也是如此.

  • `obj`不需要是布尔值.如果你有一个从你的类型定义到bool的隐式转换,那么`if(obj)`将是有效的. (2认同)

Bra*_*NET 5

if表达式必须是布尔值.说我有一个字符串:

string test = null;
Run Code Online (Sandbox Code Playgroud)

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

if (test != null)是一种表达返回一个布尔值,因此编译,并检查空的标准方式.