我在审查一些代码时,发现了以下内容:
public class MyClass
{
public bool IsEditable { get; set; }
public void HandleInput()
{
if (IsEditable.Equals(false))
{
//do stuff
}
}
}
据我所知,(IsEditable.Equals(false))
与(IsEditable == false)
是相同的(也与(!IsEditable)
相同)。除了个人喜好之外,在比较布尔值时,
.Equals()
和==
有任何区别吗?
==
和.Equals
有不同的含义?编辑:或者正如Mike Petty指出的那样,也许它是由一位长期使用Java开发的开发人员编写的,他通常习惯于编写Equals
。 - Chris Sinclairx
是一个非空的bool
类型表达式时,我从不与true
或false
进行比较。使用x
而不是x == true
或x.Equals(true)
或x != false
更容易,并且使用!x
而不是x == false
或x.Equals(false)
或x != true
更容易。对于两个非常量布尔表达式,我使用C#内置运算符而不是Equals
,例如我会使用x == y
或x != y
(有时甚至是x ^ y
)。但是对于可空布尔值,例如bool? z
,我可能会使用z == false
。它具有与(z.HasValue && !z.Value)
相同的值。 - Jeppe Stig Nielsen