的構造函數的hashCode我有不可變類型的HashCode的一些問題。產生不可變型
- 我可以「pre」 - 在構造函數中生成不可變類型的HashCode,還是有什麼理由不這樣做?
- 當我調用方法GetHashCode()時,我是否應該再次生成Hashcode?
Here's樣本類:
public class Id {
private readonly object _value;
private readonly int _hash = -1;
public Id(object value) {
_value = value;
_hash = (int) (7 * value.GetType().GetHashCode() + 7 + 7 * _value.GetHashCode());
}
public object Value {
get {
return _value;
}
}
public override int GetHashCode() {
return _hash;
}
public override bool Equals(object obj) {
Id other = obj as Id;
if (other == null) {
return false;
}
return this.GetHashCode() == other.GetHashCode();
}
}
爲什麼用這種計算散列碼的複雜方法? – 2009-05-26 13:24:28
這只是一個例子。我在i-net的某個地方發現了這個代碼。我認爲這不是生成哈希碼的最佳方法。 – Jehof 2009-05-27 06:02:36