如何使用不同的Equal概念搜索同一个对象?

时间:2014-05-02 10:53:05

标签: c# .net dictionary equals iequalitycomparer

我有几个根据用例的对象被视为等同。

我需要将这些对象用作词典的键,据我所知Dictionary<>使用Equals()方法,这限制了我只有一个实现。

这有什么解决方法吗?我希望能够注入EqualityComparer,代表或其他内容,以便Dictionary<>可以使用不同的方式搜索项目。

感谢。

1 个答案:

答案 0 :(得分:3)

任何一个字典只能有一个相等比较器。你不能要求它找到一个特定的相等比较器的密钥,因为否则它存储的哈希码将是无用的,它只需要进行线性搜索。

如果您要搜索多个相等比较器,我会保留几个单独的词典,每个词典都有不同的比较器。

(如果你只是希望能够指定相等比较器并且错过了它,那就是Dictionary(IEqualityComparer<TKey> comparer) constructor的用途)。