我想使用自定义泛型类作为字典中的键。我应该如何覆盖Equals
和GetHashCode
?如何使用自定义泛型类型作为字典中的键?
例如,
public class SomeKey<T,V>
{
public T Value1 { get; set; }
public V Value2 { get; set; }
public SomeKey(T val1, V val2)
{
this.Value1 = val1;
this.Value2 = val2;
}
public override bool Equals(SomeKey<T,V> otherKey)
{
//whats the best option here?
}
public override int GetHashCode()
{
//whats the best option here?
}
}
由于
听起来不错。关心阐述或给出一个关于为什么xor是一个好主意的链接? – Nicolas78 2011-04-30 13:57:55
那么,对于散列码来说,最好的选择很大程度上取决于值的分布。 xor是一种非常可靠,简单的方法,如果您对值的分布一无所知,您可以使用它。如果OP知道这样的信息,那么其他选择可能是适当的。所有这些只在散列码是性能瓶颈时才重要。 – 2011-04-30 14:03:05
你介意添加一个代码示例吗?谢谢! – MalcomTucker 2011-04-30 14:03:24