.net 贬型 list
我以前经常使用Lotus Domino平台及其LotusScript语言。这门语言中我最喜欢的一个特性是List对象;它会简化使用相同对象的集合。后来我发现.NET框架2.0语言里也有一个类似(甚至更加强大)的特性。
范型
.NET框架2.0引入了一个叫做范型(generics)的重要概念。虽然范型常常都是用C#语言来讨论的,但是它事实上是.NET中间语言(Intermediate Language,IL)里的一个重要特性,所以它在所有的.NET语言里都有。.NET是类别安全语言,所以编译器会检查变量分配是否合法,如果有问题它就会提示你。
类型安全特性在使用集合对象的.NET 1.1里消失了,因为集合可以容纳一切东西。在访问单独的集合元素时,你必须把它们归为正确的类型——这就是范型的作用。使用范型的集合会保留集合的一般性质,但是在被实例化的时候,通过为集合定义对象类型,类型安全被加入。
System.Collections.Generic命名空间含有用来定义范型集合的接口和类,它可以让你创建强类型集合。反过来,它们提供了比非范型强类型集合更好的类型和性能。我们将把注意力放到这样一个集合上——List。
List类
你可以使用System.Collections.Generic.List类来表示一个可以通过索引来访问的强类型对象的列表。这个类为搜索、排序和操控列表的内容提供了方法。微软的文档将List类描述为与ArrayList类对应的范型。它包括下列方法:
- Add:允许向List的结尾添加对象。
- AddRange:将一个集合的内容添加到List的结尾。
- BinarySearch:使用二进制搜索算法在被排序的List里或者其中的一部分里寻找某个元素。
- Clear:清除List里的内容(也就是说,删除所有的东西)。
- Contains:确定List里是否含有某个元素。
- ConvertAll:把所有的List元素转换成为另外一种类型。
- CopyTo:把List里的所有内容复制到另外一个数组里。
- Exists:确定List里是否含有符合条件的元素。
- Find:搜索符合特定的条件的元素。
- FindAll:搜索符合某些条件的所有元素。
- FindIndex:搜索符合条件的元素索引。
- FindLast:搜索符合特定条件的元素最后一次出现的地方。
- FindLastIndex:搜索符合特定条件的元素最后一次出现的地方,并返回其索引。
- ForEach:对每个List项目采取某个动作。
- GetEnumerator:返回一个在List里迭代的计数器。
- GetRange:返回List里元素的子集。
- IndexOf:返回符合某个值的元素的第一个索引。
- LastIndexOf:返回符合某个值的元素的最后一个索引。
- Remove:从List里删掉某个元素第一次的出现。
- RemoveAll:从List里删除符合条件的所有元素。
- RemoveAt:用某个索引从List里删除元素。
- RemoveRange:从List里删除元素组。
- Reverse:颠倒List元素的顺序。
- Sort:利用键值给List元素排序。
这个列表虽然没有列出所有的方法,但是它概要说明了List类提供的各种功能。此外,还有其他一些可用的属性,包括计算(List中项目的数量)和容量(也就是在不需要调整大小的情况下List能够容纳的项目数量)。