如何控制对象如何通过哈希集散列

Eri*_*tas 1 c# hash hashset

我正在使用 aHashSet<T>来存储对象集合。这些对象已经有一个唯一的 ID System.Guid,所以我宁愿HashSet<>只使用现有的 ID,而不是试图弄清楚如何散列对象。如何覆盖内置散列并强制我的程序使用内置 ID 值作为散列值?

还说我知道我Guid的对象中的对象HashSet<>,有没有办法仅HashSet<T>基于此从对象中获取对象Guid?或者我应该改用字典。

Mar*_*ell 5

AHashSet<>不基于键/值对,并且不提供“按键”访问 - 它只是一组唯一值,使用哈希非常快速地检查包含情况。

要使用键/值对(Guid稍后取出),最简单的选项是Dictionary<Guid,SomeType>. 现有的哈希码Guid应该没问题(尽管如果你需要(你不需要),你可以提供一个IEqualityComparer<T>用于哈希的。