こんにちは、私は .NET でオブジェクトの GetHashCode() オーバーライドを実装するための最良の方法を調べてきましたが、私が遭遇したほとんどの回答には、数値型のメンバーから数値を何らかの方法で変更してメソッドを作成することが含まれています。問題は、英数字の文字列をキーとして使用するオブジェクトがあり、文字列をキーとしてオブジェクトの内部 ID を使用するだけで、次のような根本的な問題があるかどうか疑問に思っていることです。
// Override GetHashCode() to return a permanent, unique identifier for
// this object.
static private int m_next_hash_id = 1;
private int m_hash_code = 0;
public override int GetHashCode() {
if (this.m_hash_code == 0)
this.m_hash_code = <type>.m_next_hash_id++;
return this.m_hash_code;
}
英数字の文字列をキーとして使用するオブジェクトの一意のハッシュ コードを作成するより良い方法はありますか? (いいえ、英数字文字列の数値部分は一意ではありません。これらの文字列の一部には、実際には数字がまったく含まれていません。)