基本上,我想知道我是否应该在这个例子中听ReSharper…
你会认为比较字符应该使用char . equals (char),因为它避免了拆箱,但Resharper建议使用Object.Equals(obj)。也许我遗漏了什么?
private const DEFAULT_CHAR = '#';
// DependencyProperty backing
public Char SpecialChar
{
get { return (Char)GetValue(SpecialCharProperty); }
}
// ReSharper - Access to a static member of a type via a derived type.
if (Char.Equals(control.SpecialChar, DEFAULT_CHAR)) { ... }
我猜这是因为有一个DependencyProperty支持?
不可能覆盖static
成员- Object.Equals()
是静态成员,Char
不能覆盖它,即使你可以调用 Char类型(参数仍然是Object
类型)
Object.Equals(object yourChar, object anotherChar)
或
Char.Equals(object yourChar, object anotherChar)
因为在两种情况下都会发生装箱。
为了避免这种情况,使用实例方法,在Char
:
中被覆盖if (yourChar.Equals(anotherChar)) doSomething();
Char.Equals(control.SpecialChar, DEFAULT_CHAR)
是对Object.Equals(object, object)
的调用,因此此处resharper是正确的。
我建议使用control.SpecialChar.Equals(DEFAULT_CHAR)
或者只是DEFAULT_CHAR == control.SpecialChar