泛型是啥
顾名思义,就是可以放东西的集合。但是要声明一下类型。
官方的解释:泛型是具有占位符(类型参数)的类、结构、接口和方法,这些占位符是类、结构接口和方法所存储或使用的一个或多个类型的占位符。泛型集合类可以将类型参数用作它所存储的对象的类型的占位符;类型参数作为其字段的类型和其方法的参数类型出现。[msdn]
为什么要使用泛型
之前一直在使用Datatable用来做返回值,BLL层,DAL层,IDAL层全都是用的Datatable来做返回值,但是这样的我想知道传回来的datatable中我所需要的值是哪个,我必须要知道datatable的列名,所以说这样是不可取的。在另一方面也会比较安全,泛型里面可以装任意类型的值,所以这样就可以防止别人知道是什么类型的值。
使用泛型的好处
泛型可以定义类型安全的数据结构(类型安全)
无须使用实际的数据类型(可扩展)
显著提高性能并得到更高质量的代码(高性能)
因为可以重用数据处理算法,而无须复制类型特定的代码(可重用)
来历
在C#2.0之前,一直都是使用装箱和拆箱来解决这个问题,2.0之后就出来了这个新的技术,使用泛型来解决这个问题。(装箱就是把值类型打包到object引用类型的一个实例中。拆箱就是指从对象中提取值类型。)
相对于简单的赋值而言,装箱和拆箱过程需要进行大量的计算。对值类型进行装箱时,必须分配并构造一个全新的对象。其次,拆箱所需的强制转换也需要进行大量的计算。[msdn]