[英]Is there an equivalent for Java WeakHashMap class in C#?
是否有一个C#类提供弱键或/和弱值的映射? 或至少WeakHashMap之类的功能。
在.Net 3.5及更低版本中,没有这样的结构可用。 但是我为一个辅助项目编写了一个,并将代码发布在以下位置 。
从.NET 4.0开始,Runtime.CompilerServices命名空间中有一个名为ConditionalWeakTable
的结构也可以实现。
在.NET 4之前,CLR没有提供实现此表单映射所需的功能。 特别是,Java提供了ReferenceQueue<T>
类, WeakHashMap
使用它来管理映射中的弱键。 由于.NET中没有与此类相同的内容,因此没有简洁的方法来构建等效的Dictionary
。
在.NET 4中,添加了一个新类ConditionalWeakTable<TKey, TValue>
,作为提高CLR支持动态语言的能力的一部分。 此类使用新类型的垃圾收集句柄,该句柄在CLR本身内实现,并通过内部DependentHandle
结构在mscorlib.dll中公开。
这意味着以下内容:
WeakHashMap
等效的东西。 WeakHashMap
功能的唯一方法是使用ConditionalWeakTable
类(它是密封的)。 其他信息可在以下帖子中找到:
是否有可能在C#中创建一个真正弱键的字典?
最接近的平台等价物可能是Dictionary<K, WeakReference<V>>
。 也就是说,它只是一个普通的字典,但值是弱引用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.