我来自C / C ++背景,最近开始了一项新的工作,做C#工作。我在很多代码和例子中找到了人们在if语句中使用这个约定
if(obj != null)
我记得被告知要尽可能避免使用否定逻辑。那么为什么不像
那样if(obj)
用来代替吗?是否存在使用前一种编码方式的代码标准?我认为这两个陈述的评价相同,但也许他们的评价不同?
非常感谢任何输入。
答案 0 :(得分:6)
简单的事实是,C#具有并使用一个真正的布尔类型。 if
需要布尔值。因此,如果if(obj)
不是布尔值,则obj
是语法错误。
答案 1 :(得分:5)
if
表达式必须是 boolean 。说我有一个字符串:
string test = null;
if (test)
无法编译,因为test
不是bool 。它只返回字符串引用。因此,要检查null,实际上必须检查null :
if (test != null)
是 返回bool的表达式,因此编译,并且是检查null的标准方法。