我正在查看.Net框架的MSDN中的Collection
类。
我遇到了HybridDictionary
并声明了(http://msdn.microsoft.com/en-us/library/system.collections.specialized.hybriddictionary.aspx):
当集合很小时,使用ListDictionary实现IDictionary,然后在集合变大时切换到Hashtable。
所以我想知道ListDictionary
哪个州(http://msdn.microsoft.com/en-us/library/system.collections.specialized.listdictionary.aspx)
建议用于通常包含少于10件商品的商品。
现在,对我来说,这似乎是一个任意数字(项目)。我在文档中找不到这背后的机制是什么,我怀疑性能的边界会与一些项目有关,比如2 ^ N(2到N的幂)。
现在我经常使用Dictionary
的集合类型,集合可能包含10到30个项目,50个顶部,具体取决于“页面大小”。
但是HybridDictionary
和ListDictionary
需要取消装箱,并且没有通用的类型构造器。
我找不到关于HybridDictionary
与Dictionary
的效果的任何比较。
那么何时实际使用此HybridDictionary
而不是其他Dictonary类型?
P.S。如果项目数量增加以优化其功能,HybridDictionary
会切换到ListDictionary
或HashTable
。为什么要使用ListDictionary
?如果软件中的某些要求发生变化,并且突然最多必须在ListDictionary
中放入20个项目,而不是最多10个项目,则必须将代码重新计算到HybridDictionary
以维护性能
答案 0 :(得分:31)
何时使用HybridDictionary而非其他词典类型?
如果您确定收藏品的尺寸少于10件,则可以使用ListDictionary
。
HybridDictionary
与Dictionary
几乎相同,但在收集大小少于10个项目时,将利用ListDictionary
的效果。一旦集合增长到10以上,HybridDictionary
将从内部使用ListDictionary
切换为使用HashTable
,就像普通的Dictionary
一样。
所以什么时候使用,如果你的收藏品通常不超过10件,但有时可能会变大,那么HybridDictionary
就是那个。
例如,我们在移动设备应用程序通信层中使用HybridDictionary
,通信消息队列几乎总是不到10项,但如果有后端服务器中断,则通信消息将构建到100或1000取决于服务器关闭的时间长度,此方案中的ListDictionary
会很糟糕,在这种情况下,HybridDictionary
会切换到HashTable
以保持性能提升并仍然给予我们在10岁以下时的最高表现。
所以它在专门的地方使用,因此命名空间属于System.Collections.Specialized
:)