我有几个根据用例的对象被视为等同。
我需要将这些对象用作词典的键,据我所知Dictionary<>
使用Equals()
方法,这限制了我只有一个实现。
这有什么解决方法吗?我希望能够注入EqualityComparer
,代表或其他内容,以便Dictionary<>
可以使用不同的方式搜索项目。
感谢。
答案 0 :(得分:3)
任何一个字典只能有一个相等比较器。你不能要求它找到一个特定的相等比较器的密钥,因为否则它存储的哈希码将是无用的,它只需要进行线性搜索。
如果您要搜索多个相等比较器,我会保留几个单独的词典,每个词典都有不同的比较器。
(如果你只是希望能够指定相等比较器并且错过了它,那就是Dictionary(IEqualityComparer<TKey> comparer)
constructor的用途)。