.NET 2.0泛型集合类与.NET 1.1集合类的区别(一)
本文旨在阐述.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集合类的区别(一)相关推荐
- .NET 2.0 泛型在实际开发中的一次小应用
早闻.NET 2.0中泛型的大名,但一直未在实际开发中使用. 最近在开发博客园网站程序的过程中体验了一下. 应用场景: 在配置文件中通过反序列化读取相应的邮件设置. 配置文件示例: < ...
- (转)C#2.0泛型--Dictionary,List用法
C#2.0泛型--Dictionary,List用法 泛型是 C#2.0 语言和公共语言运行库 (CLR) 中的一个新功能.泛型将类型参数的概念引入 .NET Framework,类型参数使得设计如下 ...
- java参数传入泛型类型_Java 5.0 泛型之 使用泛型统一传入的参数类型
Java 5.0 泛型之 使用泛型统一传入的参数类型 package Demo; // 使用泛型统一传入的参数类型 class Info28 { private T var; // 此类型由外部决定 ...
- java面试 泛型_Java面试题五:Java 的泛型, super T 和 extends T 的区别
相关文章: java泛型通配符 ? extends T 和 ? super T 的区别和用法 一.二者的意思 ? extends T :表示上界是T, ? 都是继承自T的,都是T的子类: ? supe ...
- Java 泛型中? super T和? extends T的区别
原文链接 李璟(jlee381344197@gmail.com) 经常发现有List<? super T>.Set<? extends T>的声明,是什么意思 ...
- 在VC 6.0里Win32 Application和Win32 console Application的区别
我们用Visual C++在创建工程的时候有Win32 Application和Win32 console Application,下面我们就了解下他们的区别. 在VC 6.0里Win32 Appli ...
- C#2.0泛型-Dictionary,List的用法
泛型最常见的用途是创建集合类. .NET Framework 类库在 System.Collections.Generic 命名空间中包含几个新的泛型集合类.应尽可能地使用这些类来代替普通的类,如 S ...
- Java-Java5.0泛型解读
概述 泛型类 泛型方法 泛型接口 边界符 通配符 PECS原则 类型擦除 概述 Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序 ...
- C#2.0泛型中的变化: default 关键字
今天回答别人问题的时候,才发现原先的T.default语法被取消了,使用了新的default关键字来实现这一功能.还好回复前动手试了一下,不然就...-_-b 下面详细说明一下.之所以会用到defau ...
最新文章
- C++ 笔记(05)— 变量(变量定义、声明、初始化、extern关键字、变量之间转换)
- 01-mybatis源码阅读
- 怎么把python结果全部显示-python – 如何展开输出显示以查看更多列?
- MATLAB Simulink 做BP PID报错:Error :*** during flag=* call must be a real vector of length 3
- ACL 2020 | 基于不同硬件搜索更好的Transformer结构
- boost::mpl模块实现copy相关的测试程序
- Java黑皮书课后题第10章:*10.13(几何:MyRectangle2D类)定义MyRectangle2D类
- c# dataset 例子
- 利用xslt对xml进行缩进格式化处理
- Android版日语学习应用的逆向分析
- VGG16的10折交叉验证实现cifar10的分类(keras实现)
- 架构之美第三章-美丽架构之道
- 特殊的空格-ASCII码值160
- 网络流量分析利器-可视化网络-netflow【1】-基础原理
- 如何自制daplink_DAPLINK功能介绍
- 地级市面板数据(2000-2019)四:失业+进出口+工资+规上企业+房地产等(stata版)
- 【mininet 0x02】如何使用mn工具来操作mininet
- vite 不支持 ie 11?configureBuild Hook 帮你定制 bundle 打包过程
- isspace() 函数
- 苹果进入品牌价值衰减期
热门文章
- VS2010打开旧版本MFC工程无对话框
- c# Dictionary 中Keys.ToArray方法的细节测试
- 解决initializing java tooling(1%)
- Bash学习系列---第2/3部分
- C++基础:指针,函数指针
- C++中的XML配置文件编程经验
- 警惕同学录联系信息等泄露!
- SQL2000系統表的應用
- Error Could not open client transport with JDBC Uri jdbchive2hadoop10210000 Failed to open new sessi
- AcWing 837. 连通块中点的数量