【发布时间】:2012-01-28 19:17:35
【问题描述】:
基本上,我想知道在这种情况下我是否应该听 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 支持?
【问题讨论】:
-
我理解的 Equals 比较相似或不同的事物,例如你不会说 ObjectA == ObjectB 你会检查使用 ObjectA.Equals(ObjectB)
-
实际的代码行是什么? ReSharper 是否对其建议给出任何理由?
-
我的 resharper 不建议 :)
-
这不是因为它是一个依赖属性,而是因为您通过后代类 (
System.Char) 从System.Object调用静态方法。我认为 ReSharper 的警告消息(“通过派生类型访问类型的静态成员”)非常清楚。 -
考虑一下,如果将
Char.Equals替换为Boolean.Equals、'System.Console.Equals,Uri.Equal` 等,您的代码会按预期工作。
标签: c# object char resharper object-equality