【问题标题】:Is it "bad" to use objects as Keys in dictionaries?将对象用作字典中的键是否“不好”?
【发布时间】:2014-05-01 21:58:02
【问题描述】:

我假设在字典中进行查找时,它需要对您提供给它的键进行哈希处理,然后使用该哈希来查找您要查找的对象。

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

【问题讨论】:

  • 好像有点臭。用例是什么?
  • 如果这些对象的GetHashCode方法正确实现应该没有问题
  • 没关系,但要小心覆盖 GetHashCode() 和 Equals() 方法
  • @TruthOf42 最好使用控件的不可变的、唯一的属性作为键,而不是整个对象。

标签: .net dictionary hashtable


【解决方案1】:

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

看看https://stackoverflow.com/a/7941876/400760,我相信会有意想不到的后果,即使根据基于哈希的集合的典型实现方式正确实现了 GetHashCode()。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-25
    • 1970-01-01
    • 2012-07-18
    • 1970-01-01
    • 2011-10-09
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    相关资源
    最近更新 更多