首页 > 代码库 > 飘过来学C#系列(3)之------泛型

飘过来学C#系列(3)之------泛型

泛型是程序设计语言的一种特性。允许程序员在强类型程序设计语言中编写

代码时定义一些可变部分,那些部分在使用前必须作出指明。各种程序设计语言和其编译器、运行环境对泛型的支持均不一样。将类型参数化以达到代码复用提高软件开发工作效率的一种数据类型。泛型类是引用类型,是堆对象,主要是引入了类型参数这个概念。

泛型的优点:

性能

值类型存储在栈上,引用类型存储在堆上,.net中很容易把值类型转换为引用类型,将一个值类型转换为引用类型叫装箱,反之叫拆箱,装箱和拆箱操作很容易进行,但是会损失性能.

var list = new ArrayList();list.Add(44);  //装箱foreach(int item in list){    Console.WriteLine(item);//拆箱}

下面的例子中用List<int>,所以int类在JIT编译器动态生成的类中使用,不再进行装箱和拆箱操作.

List<int> list = new List<int>();list.Add(44);//不用装箱foreach(int item in list){     Console.WriteLine(item);//不用拆箱      }

类型安全

var list = new ArrayList();list.Add(44);list.Add("string");    list.Add(new MyClass());    foreach( int item  in list){     Console.WriteLine(item);//运行报错}

如果用泛型

List<int> list = new List<int>();list.Add(44);list.Add("string");//无法执行list.Add(new MyClass());//无法执行

这样错误能够尽早的发现,编译器就不会编译这段代码.

二进制代码重用

泛型可以定义一次,使用不同的类型实例化

var list = new List<int>();
list.Add(44);var stringList = new List<string>();
stringList.Add("string");var classList = new List<Class>();
classList.Add(new Class())

 

飘过来学C#系列(3)之------泛型