我想使用自定義泛型類作爲字典中的鍵。我應該如何覆蓋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