用于雾化T的.Net集合?

我正在寻找是否存在适用于雾化一般类型T的预先存在的.Net“Hash-Set类型”实现。我们有大量相同的对象进入序列化源,需要雾化以节省内存。

Dictionary with the value == keyDictionary with the value == key完美地工作,但是这些集合中的对象在整个应用程序中可以运行数百万,因此将2个引用存储到每个对象似乎非常浪费。

HashSet不能用,因为它只有Contains,有吗?没办法? 到达实际的成员实例。

显然我可以自己滚动,但想检查是否有任何预先存在的东西。 在C5的扫描没有看到任何跳出来,但然后他们250多页的文档确实让我想知道我是否错过了什么。

编辑 最基本的想法是我需要能够获得独特的对象后退,即HashSet包含(T obj)但不是Get(T obj) / EDIT

最糟糕的集合只需要实现:

 T GetOrAdd(T candidate) void Clear() 

并采用仲裁IComparer和GetOrAdd是~O(1)并且理想情况下是primefaces的,即不浪费时间Hashing两次。

编辑如果没有现有的实施,我们将不胜感激任何关于基本哈希/搭讪技术来源的建议。 – 已经指出了Mono HashSet源代码,因此本节回答/编辑

您可以从Reference Source获取 HashSet的源代码,并编写自己的GetOrAdd方法。