.net 是不是;“坏的”;在字典中将对象用作键?

.net 是不是;“坏的”;在字典中将对象用作键?,.net,dictionary,hashtable,.net,Dictionary,Hashtable,我假设在字典中进行查找时,需要对给定的键进行散列,然后使用该散列找到要查找的对象 如果是这样的话,使用较大的对象作为键是否会显著降低查找速度,或者会产生使用字符串或简单数据类型作为键不会遇到的其他后果?是的,使用可变对象作为字典键是个坏主意 看一看,让我相信会有意想不到的后果,即使根据基于哈希的集合通常的实现方式正确实现GetHashCode() 使用不可变对象作为字典键应该是安全的。似乎有点难闻。用例是什么?如果这些对象的GetHashCode方法得到正确实现,应该不会有任何问题。这没关系,但

我假设在字典中进行查找时,需要对给定的键进行散列,然后使用该散列找到要查找的对象


如果是这样的话,使用较大的对象作为键是否会显著降低查找速度,或者会产生使用字符串或简单数据类型作为键不会遇到的其他后果?

是的,使用可变对象作为字典键是个坏主意

看一看,让我相信会有意想不到的后果,即使根据基于哈希的集合通常的实现方式正确实现GetHashCode()


使用不可变对象作为字典键应该是安全的。

似乎有点难闻。用例是什么?如果这些对象的
GetHashCode
方法得到正确实现,应该不会有任何问题。这没关系,但要小心重写GetHashCode()和Equals()方法。请看:@TruthOf42最好使用控件的不可变、唯一属性作为键,而不是整个对象。