【发布时间】:2012-11-28 21:34:52
【问题描述】:
我正在查看一些代码,发现如下所示:
public class MyClass
{
public bool IsEditable { get; set; }
public void HandleInput()
{
if (IsEditable.Equals(false))
{
//do stuff
}
}
}
据我所知,(IsEditable.Equals(false)) 与(IsEditable == false) 相同(也与(!IsEditable) 相同)。
除了个人喜好,.Equals() 和== 之间有什么区别,特别是用来比较bools?
【问题讨论】:
-
只是猜测:可能是从 Java 移植过来的,
==和.Equals有不同的含义?编辑:或者正如 Mike Petty 所指出的,也许它是由一位习惯于正常编写Equals的长期 Java 开发人员编写的。 -
当
x是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)。但是对于 nullable 布尔值,例如bool? z,我可能会使用z == false。它与(z.HasValue && !z.Value)具有相同的值。
标签: c#