我知道在实现自定义相等性检查时覆盖 GetHashCode
的重要性 - 我已经实现了 IEquality<T>
接口,并且我知道泛型和非泛型的 Equals
之间的区别 如此讨论. 现在,是否有必要重写 Equals(object t)
?一切不都可以包含在泛型 Equals(T t)
中吗?
public override int GetHashCode() //required for hashsets and dictionaries
{
return Id;
}
public bool Equals(T other) //IEquatable<T> here
{
return Id == other.Id;
}
public override bool Equals(object obj) //required??
{
return Equals(obj as T);
}
other
为null
的情况,因为如果other
不是T
类型,那么obj as T
会返回null
。 - Jamiec