我遇到了这段代码:
if(message.Contains("some text") == true)
是什么让我怀疑作者的意图是什么。 Contains()总是返回bool,所以更干净的版本应该是:
if(message.Contains("some text"))
我是对的还是以前的解决方案有专业的情况?
答案 0 :(得分:3)
是否有任何使用
if(condition == true)
而不仅仅是if(condition)
的情况?
是的,如果使用返回可空类型的空条件运算符:
string message = null;
if(message?.Contains("some text") == true)
{
// ...
}
没有==
这将无法编译,因为Nullable<bool>
不是bool
。
另一个原因可能是您希望somelongcondition == false
超过!somelongcondition
,因为它很容易忽略感叹号。
在以下情况中,我更愿意选择一个更有意义的名称,但如果不可能== true
或== false
至少表明它是一个bool:
if (flag123 == true)
{
// ...
}
答案 1 :(得分:0)
行为完全相同。事实上,编译器将优化这些类型的调用以删除多余的比较,因此:
if(message.Contains("some text") == true)
实际上将被编译为:
if(message.Contains("some text"))
只要该方法返回bool
(而不是bool?
,这实际上是编译时错误)