gpt4 book ai didi

c# - 何时使用 HybridDictionary 而不是其他 Dictionary 类型?

转载 作者:IT王子 更新时间:2023-10-29 04:42:39 26 4
gpt4 key购买 nike

我正在查看 .Net 框架的 MSDN 中的 Collection 类。我遇到了 HybridDictionary,它指出 ( http://msdn.microsoft.com/en-us/library/system.collections.specialized.hybriddictionary.aspx ):

Implements IDictionary by using a ListDictionary while the collection is small, and then switching to a Hashtable when the collection gets large.

所以我想知道 ListDictionary 里面写着 ( http://msdn.microsoft.com/en-us/library/system.collections.specialized.listdictionary.aspx )

Recommended for collections that typically include fewer than 10 items.

现在这对我来说似乎是一个任意(项目)数量。我无法在文档中找到这背后的机制,我怀疑性能边界可能与许多项目有关,例如 2^N(2 的 N 次方)。

现在我经常使用 Dictionary 的集合类型,集合可能包含 10 到 30 个项目,50 个顶部,具体取决于“页面大小”。

但是 HybridDictionaryListDictionary 需要拆箱并且没有通用类型构造函数。

我无法在任何地方找到关于 HybridDictionaryDictionary 性能的比较。

那么什么时候真正使用这个 HybridDictionary 而不是其他 Dictonary 类型?

附言如果 HybridDictionary 在项目数量增加时切换到 ListDictionaryHashTable 以优化其功能。为什么要使用 ListDictionary?如果软件中的某些要求发生变化,突然最多 20 个项目必须放入 ListDictionary,而不是最大数量的 10 个项目,则代码必须重构为 HybridDictionary 保持性能?

最佳答案

When to use a HybridDictionary over other Dictionary types?

当您确定集合大小将少于 10 个项目时,您将使用 ListDictionary

HybridDictionaryDictionary 几乎相同,但当集合大小小于 10 时将利用 ListDictionary 的性能项目。一旦集合增长到 10 以上,HybridDictionary 将从内部使用 ListDictionary 切换到像普通 Dictionary 一样使用 HashTable .

因此,何时使用一个,如果您的收藏通常少于 10 个项目,但有时会变得更大,那么 HybridDictionary 将是您要使用的那个。

例如,我们在移动设备应用程序通信层中使用 HybridDictionary,通信消息队列几乎总是低于 10 个项目,但如果后端服务器中断,通信消息将构建根据服务器停机时间的长短,达到 100 或 1000,在这种情况下 ListDictionary 会很糟糕,在那种情况下 HybridDictionary 将切换到 HashTable 以保持性能,并在低于 10 时仍能为我们提供最佳性能。

所以它用在专门的地方,因此它属于 System.Collections.Specialized 的命名空间 :)

关于c# - 何时使用 HybridDictionary 而不是其他 Dictionary 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18779433/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com