C#高级编程读书笔记之泛型的优点

泛型是.NET2.0新提供的特性。
一、泛型的一个主要优点就是性能。
在出现泛型之前,如果对值类型使用集合类,就必须把值类型装箱成引用类型,然后加入到集中中,在使用集合时,又需要把引用类型拆箱成值类型。如下面的示例显示了System.Collections命名空间中的ArrayList类,ArrayList存储对象,Add()方法定义为需要把一个对象作为参数,所以要装箱一个整数类型,读取时又要进行拆箱。
ArrayList list  =   new  ArrayList();
list.Add(
10 );
int  i1  =  ( int )list[ 0 ];
foreach ( int  i2  in  list)
{
Console.WriteLine(i2);
}
装箱和拆箱的实现都不复杂,但性能损失较大,如果迭代的项数多时对性能的损失更为明显。
为了避免这种性能的损失,到了.NET2.0后,就可以使用泛型。
System.Collections.Generic命名空间中List<T>类不使用对象,而是在使用时定义类型。下面示例,List<T>类的泛型类型定义为int,所以int类型在JIT编译器动态生成的类中使用,不再进行装箱和拆箱的操作,从而就避免了这方面的性能损失。
List < int >  list  =   new  List < int > ();
list.Add(
10 );
int  i1 =  list[ 0 ];
foreach ( int  i2  in  list)
{
Console.WriteLine(i2);
}
二、泛型的另外一个特点就是类型安全
在普通集合中,可以在这个集合中添加任何类型,如在ArrayList类型的集合中,可以添加整数,字符串等类型的对象,如果这个时候用foreach去迭代集合中的元素,就会产生异常。
错误应该尽早发现。在泛型类List<T>中,泛型类型T定义了运行使用的类型,即除了T这种类型,其它类型无法添加到泛型的集合中去。
三、二进制代码的重用
泛型允许更好地重用二进制代码,泛型类可以定义一次,用许多不用类型实例化。如定义List<T>泛型类,则可以用int,字符串等类型实例化。
List < T >  intList  =   new  List < T > ();
intList.Add(
10 );

List
< string >  stringList  =   new  List < string > ();
stringList.Add(
" aryang " );

你可能感兴趣的:(读书笔记)