大家好,我一直在阅读为 .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;
}
有没有更好的方法来为使用字母数字字符串作为键的对象提供唯一的哈希码?(不,字母数字字符串的数字部分不是唯一的;其中一些字符串实际上根本没有数字。)任何想法都将不胜感激!