天下大势,合久必分,分久必合。——《三国演义》
.NET 作为平台,意图统一群雄割据的编程天下,拥立C#为大王,分别封VB为VB.NET,VC为VC.NET,JScript为JScript.NET……并在各自能力基础上加以完善。朝廷之上,一律说IL,各运行机制一律遵从CLR规范。平台改革,泛型就是一例。也许某天,皇帝想去俄罗斯宫找金发碧眼波波娃,不想从里面走出黑肤厚唇南非妃子,没带翻译!异常出现了,龙颜大怒,从此立下规定:各妃子呆在自己宫中,不得串门,钦此~~得,这就是泛型规定。在这样的规定下,皇帝高兴了,想找谁就写谁的名字,肯定不会异常了,安全又高效。钦点微软上书房行走,黄马褂,三眼花翎~~~(啪~哪来的臭鸡蛋?)
 
言归正传,看看大NET律例上是怎么说的。
“泛型是具有占位符(类型参数)的类、结构、接口和方法”
有代码为例:
public class Generic<T>
{
    public T Field;
}
在创建泛型类的实例时,会指定实际类型来替换类型参数。
Generic<int> g = new Generic<int>();
g.Field = 10;
上面,用int类型替换T,然后可以给他赋值10,运行OK。那如果用string替换呢?当然赋值的时候就要赋值字符串。当然,T的替换不一定就是简单类型,还可以是自定义的类型(Class、struct等),而且在实战中经常碰到。总而言之,泛型就像函数y=f(x)一样,如果x=0,则函数中所有的x都应该用0来替换。看,数学太重要了,HOHO。
泛型通常用在集合和在集合上运行的方法中,那么首先要掌握的是泛型集合System.Collections.Generic 和System.Collections.ObjectModel ,尤其是前者。以后用集合的时候,尽量使用System.Collections.Generic空间下的类,首推List。
先看一下没有泛型以前的集合读写:
System.Collections.ArrayList list = new System.Collections.ArrayList();
for (int i = 0; i < 100; i++)
{
    list.Add(i);
}
int sum = 0;
for (int i = 0; i < 100; i++)
{
    sum += (int)list[i];//这里是异常频发点

用了泛型,效果就不一样了~~(广告词?)
List<int> list = new List<int>();
for (int i = 0; i < 100; i++)
{
    list.Add(i);
}
int sum = 0;
for (int i = 0; i < 100; i++)
{
    sum += list[i];
}
不用拆箱,如果类型不匹配,在编译阶段就会被揪出来。
例子是很简单的代码,但是在实战中使用率占8成以上。简单的练习学会8成应用,何乐而不为呢?
钦此~~~