本文旨在阐述.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。

在.NET 2.0中,除掉以前的命名空间外,还增加了关于泛型的命名空间,包括:

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接口,关于接口的不同,将在下篇文章中介绍

.NET 2.0泛型集合类与.NET 1.1集合类的区别(一)相关推荐

  1. .NET 2.0 泛型在实际开发中的一次小应用

    早闻.NET 2.0中泛型的大名,但一直未在实际开发中使用. 最近在开发博客园网站程序的过程中体验了一下. 应用场景:      在配置文件中通过反序列化读取相应的邮件设置. 配置文件示例: < ...

  2. (转)C#2.0泛型--Dictionary,List用法

    C#2.0泛型--Dictionary,List用法 泛型是 C#2.0 语言和公共语言运行库 (CLR) 中的一个新功能.泛型将类型参数的概念引入 .NET Framework,类型参数使得设计如下 ...

  3. java参数传入泛型类型_Java 5.0 泛型之 使用泛型统一传入的参数类型

    Java 5.0 泛型之 使用泛型统一传入的参数类型 package Demo; // 使用泛型统一传入的参数类型 class Info28 { private T var; // 此类型由外部决定 ...

  4. java面试 泛型_Java面试题五:Java 的泛型, super T 和 extends T 的区别

    相关文章: java泛型通配符 ? extends T 和 ? super T 的区别和用法 一.二者的意思 ? extends T :表示上界是T, ? 都是继承自T的,都是T的子类: ? supe ...

  5. Java 泛型中? super T和? extends T的区别

    原文链接          李璟(jlee381344197@gmail.com) 经常发现有List<? super T>.Set<? extends T>的声明,是什么意思 ...

  6. 在VC 6.0里Win32 Application和Win32 console Application的区别

    我们用Visual C++在创建工程的时候有Win32 Application和Win32 console Application,下面我们就了解下他们的区别. 在VC 6.0里Win32 Appli ...

  7. C#2.0泛型-Dictionary,List的用法

    泛型最常见的用途是创建集合类. .NET Framework 类库在 System.Collections.Generic 命名空间中包含几个新的泛型集合类.应尽可能地使用这些类来代替普通的类,如 S ...

  8. Java-Java5.0泛型解读

    概述 泛型类 泛型方法 泛型接口 边界符 通配符 PECS原则 类型擦除 概述 Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序 ...

  9. C#2.0泛型中的变化: default 关键字

    今天回答别人问题的时候,才发现原先的T.default语法被取消了,使用了新的default关键字来实现这一功能.还好回复前动手试了一下,不然就...-_-b 下面详细说明一下.之所以会用到defau ...

最新文章

  1. C++ 笔记(05)— 变量(变量定义、声明、初始化、extern关键字、变量之间转换)
  2. 01-mybatis源码阅读
  3. 怎么把python结果全部显示-python – 如何展开输出显示以查看更多列?
  4. MATLAB Simulink 做BP PID报错:Error :*** during flag=* call must be a real vector of length 3
  5. ACL 2020 | 基于不同硬件搜索更好的Transformer结构
  6. boost::mpl模块实现copy相关的测试程序
  7. Java黑皮书课后题第10章:*10.13(几何:MyRectangle2D类)定义MyRectangle2D类
  8. c# dataset 例子
  9. 利用xslt对xml进行缩进格式化处理
  10. Android版日语学习应用的逆向分析
  11. VGG16的10折交叉验证实现cifar10的分类(keras实现)
  12. 架构之美第三章-美丽架构之道
  13. 特殊的空格-ASCII码值160
  14. 网络流量分析利器-可视化网络-netflow【1】-基础原理
  15. 如何自制daplink_DAPLINK功能介绍
  16. 地级市面板数据(2000-2019)四:失业+进出口+工资+规上企业+房地产等(stata版)
  17. 【mininet 0x02】如何使用mn工具来操作mininet
  18. vite 不支持 ie 11?configureBuild Hook 帮你定制 bundle 打包过程
  19. isspace() 函数
  20. 苹果进入品牌价值衰减期

热门文章

  1. VS2010打开旧版本MFC工程无对话框
  2. c# Dictionary 中Keys.ToArray方法的细节测试
  3. 解决initializing java tooling(1%)
  4. Bash学习系列---第2/3部分
  5. C++基础:指针,函数指针
  6. C++中的XML配置文件编程经验
  7. 警惕同学录联系信息等泄露!
  8. SQL2000系統表的應用
  9. Error Could not open client transport with JDBC Uri jdbchive2hadoop10210000 Failed to open new sessi
  10. AcWing 837. 连通块中点的数量