ConditionalWeakTable<TKey, TValue>是否保证元素的插入顺序?
ConditionalWeakTable<TKey, TValue> 是否保证插入顺序?
ConditionalWeakTable<TKey, TValue> 在.NET 6及所有已发布的.NET版本中,都不保证维护插入顺序。
原因如下:
- 它的设计核心是为弱引用的键对象关联对应的附加值,内部实现依赖哈希表类的结构(类似
Dictionary<TKey, TValue>),这类结构本身不会保留元素的插入顺序。 - 官方文档从未提及该类有顺序保证,而集合类如果没有明确说明顺序特性,默认都不能依赖其遍历或访问的顺序与插入顺序一致。
- 无论是通过枚举器遍历,还是其他方式访问元素,都可能因为内部哈希表的重组(比如扩容、哈希冲突处理)导致顺序变化,因此绝对不能在业务逻辑中依赖它的插入顺序。
内容的提问来源于stack exchange,提问作者Christoph Mett
相关产品推荐
相关产品推荐

