DotNet Dictionary 实现的原理及特点有哪些?
- 内容介绍
- 文章标签
- 相关推荐
本文共计8675个文字,预计阅读时间需要35分钟。
一:前言本篇主要探讨笔者对DotNet中Hashtable与Dictionary的认识。一直以来,在直接使用上,两者都被集成在一起,直接使用object类型,并可通过泛型使用。以前也仅大致看过Hashtable的实现。最近查MSDN时发现,建议开发者使用Dictionary替代Hashtable。
一:前言 本来笔者对DotNet的Hashtable及Dictionary认识一直集中在使用上,一个直接用object 一个可以用泛型,以前也只大概看过Hashtable的实现。最近查MSDN时发现有建议开发者使用Dictionary代替Hashtable的描述,出于好奇测试了Hashtable及Dictionary读写性能,发现无论读还是写Dictionary都大幅领先Hashtable,然后就花时间整理了Dictionary操作逻辑试图找到这种性能提升的原因(最后会发现实现上的差异带来的性能明显提升也算的上是理所当然)。下文实际是介绍的Dictionary的实现(调试中使用的源是corefx 3.1),其中穿插着对比了Hashtable的实现逻辑。 二:Dictionary成员介绍 先简单介绍下Dictionary里的主要成员(source.dot.net/#System.Private.CoreLib/Dictionary.cs) 如果您之前很少有关注过DIctionary或类似集合的实现,下面对成员的解释可能看起来会有些跳跃,不过您还是可以通过查看这些成员介绍形成一个大概的印象,后面一章节的内容会较详细的向您介绍Dictionary的操作细节会反复涉及到这些关键成员。 下文将讲述的Dictionary集合的实现都是基于DotNet平台的,不过主流托管平台/语言对于BLC基础库的实现都有很多相似的地方,即使您不使用DotNet平台也可以看一下,文中会极少的直接粘贴BLC源代码。本文共计8675个文字,预计阅读时间需要35分钟。
一:前言本篇主要探讨笔者对DotNet中Hashtable与Dictionary的认识。一直以来,在直接使用上,两者都被集成在一起,直接使用object类型,并可通过泛型使用。以前也仅大致看过Hashtable的实现。最近查MSDN时发现,建议开发者使用Dictionary替代Hashtable。
一:前言 本来笔者对DotNet的Hashtable及Dictionary认识一直集中在使用上,一个直接用object 一个可以用泛型,以前也只大概看过Hashtable的实现。最近查MSDN时发现有建议开发者使用Dictionary代替Hashtable的描述,出于好奇测试了Hashtable及Dictionary读写性能,发现无论读还是写Dictionary都大幅领先Hashtable,然后就花时间整理了Dictionary操作逻辑试图找到这种性能提升的原因(最后会发现实现上的差异带来的性能明显提升也算的上是理所当然)。下文实际是介绍的Dictionary的实现(调试中使用的源是corefx 3.1),其中穿插着对比了Hashtable的实现逻辑。 二:Dictionary成员介绍 先简单介绍下Dictionary里的主要成员(source.dot.net/#System.Private.CoreLib/Dictionary.cs) 如果您之前很少有关注过DIctionary或类似集合的实现,下面对成员的解释可能看起来会有些跳跃,不过您还是可以通过查看这些成员介绍形成一个大概的印象,后面一章节的内容会较详细的向您介绍Dictionary的操作细节会反复涉及到这些关键成员。 下文将讲述的Dictionary集合的实现都是基于DotNet平台的,不过主流托管平台/语言对于BLC基础库的实现都有很多相似的地方,即使您不使用DotNet平台也可以看一下,文中会极少的直接粘贴BLC源代码。
