不変型のHashCodeについていくつか質問があります。不変型のコンストラクタでHashCodeを生成
- コンストラクタ内の不変型のHashCodeを "事前に"生成することができますか、それとも何らかの理由がありますか?
- GetHashCode()メソッドが呼び出されたとき、私は常にハッシュコードを生成する必要がありますか?
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();
}
}
ハッシュコードを計算する複雑な方法はなぜですか? –
これはほんの一例です。 i-netのどこかでそのコードが見つかりました。私はそれがハッシュコードを生成する最良の方法ではないと思う。 – Jehof