【发布时间】:2014-09-16 20:36:34
【问题描述】:
我实现IEqualityComparer时怎么会有GetHashCode(T obj)的参数?它当然不是静态对象,那为什么我不能只使用当前实例的状态来生成哈希码呢?是this == obj吗?
我很好奇,因为我正在尝试这样做:
public abstract class BaseClass : IEqualityComparer<BaseClass>
{
public abstract int GetHashCode(BaseClass obj);
}
public class DerivedClass : BaseClass
{
public int MyData;
public override int GetHashCode(BaseClass obj)
{
return MyData.GetHashCode();
// Or do I have to do this:
// return (DerivedClass)obj.MyData.GetHashCode();
}
}
我试图阻止进行强制转换,因为它被用于真正高性能的代码中。
【问题讨论】:
标签: c# interface polymorphism