通过哈希码获取对象

Ore*_* P. 2 c# hash hashcode

我不明白为什么没有本机功能来做到这一点.假设我创建了以下类:

public class Student {
     public string Name {get; set;}
     public override int GetHashCode() {
         return(Name.GetHashCode());
     }
}
Run Code Online (Sandbox Code Playgroud)

之后,我创建了一个HashSet包含许多学生的人.现在我想让一个学生HashSet使用他的名字,这也是使用的哈希码,没有枚举.这可能吗?如果是的话,我该如何做到这一点?由于学生的名字被用作哈希码,这应该可以通过O(1)操作实现,对吧?

Tho*_*que 5

哈希码不是唯一标识符.不同的对象可以具有相同的哈希码.对哈希码的唯一要求是被认为相等的对象具有相同的哈希码.

如果您需要O(1)根据密钥检索项目,请使用a Dictionary<TKey, TValue>,而不是a HashSet<T>.