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



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



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

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

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

我无法找到关于HybridDictionaryDictionary的性能的比较。

那么,何时在其他字典类型上实际使用此HybridDictionary

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

最佳答案



当您确定集合大小将小于10个项目时,可以使用ListDictionary
HybridDictionaryDictionary几乎相同,但是当集合大小小于10个项目时,它将利用ListDictionary的性能。一旦集合超过10个,HybridDictionary将从内部使用ListDictionary切换为使用HashTable,就像普通的Dictionary一样。

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

例如,我们在移动设备应用程序comms层中使用HybridDictionary,comms消息队列几乎总是少于10个项目,但是如果后端服务器中断,则comms消息将累积为100或1000,具体取决于多长时间服务器关闭,这种情况下的ListDictionary会很糟糕,在这种情况下HybridDictionary将切换到HashTable以保持性能,并在10以下时仍能为我们提供最佳性能。

因此,它在专门的地方使用,因此它属于System.Collections.Specialized的 namespace :)

10-05 22:37