本文旨在阐述.NET 2.0泛型集合类与.NET 1.1集合类在使用中的区别,而不是介绍泛型的优势或者使用。这篇文章假设你已经会简单使用泛型来编程。
本文章使用.NET 2.0的2.0.50215.44版本,与正式版本可能有出入。
1、命名空间
1.1中关于集合的命名空间包括:
System.Collections | 常见的动态数组ArrayList、字典基础类DictionaryBase和集合基础类Collection以及其他。 |
System.Collections.Specialized | 常见的强类型的集合类,以字符串为键位检索的NameObjectCollectionBase,可存储字符串的NameValueCollection。 |
System.Collections.Generic | 核心的泛型集合实现,包括动态数组List、字典Dictionary; |
System.Collections.ObjectModel | 面向建立对外对象模型中常见的Collection、集合和字典的融合体KeyedCollection; |
需要注意的是,在.NET 1.1中,mscorlib.dll实现的Queue、Stack,对应到.NET 2.0的泛型实现,移动到System.dll中了。另外,.NET 2.0的泛型实现并不是与原先一一对应的,他将以前几个重复功能的类合并成了一个泛型的实现,并新增了一些原先没有的新类,例如LinkedList。
2、System.Collections.Generic.List<T>
List<T>是原先ArrayList的泛型实现,是最基础的、性能最好和功能最强大的“动态数组”,他被建议使用于程序内部需要集合处理的地方,但并不被推荐直接暴露给外界程序,因为他的“入口”实在太多。如果需要暴露你的集合请参考使用Collection<T>。事实上,许多泛型的集合类内部就是使用List<T>,例如Collection<T>。
List<T>实现了排序功能,通过Sort方法可以实现各种负责的排序,因此,他也就不需要有1.1中SortedList的对应实现了。
List<T>除掉支持List原先的功能外,还提供了一些有意思的功能,例如:
List<T>.ForEach(System.Action<T>)方便了简单的循环使用,可以参见:http://notgartner.com/posts/1510.aspx
System.Collections.Generic.List<T>.ToArray()可以直接返回强类型的数组,这样就不必先建立一个数组,拷贝,再返回这么麻烦了。
List<T>实现了泛型的IList<T>,还实现了非泛型的IList接口,关于接口的不同,将在下篇文章中介绍
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构