在开始动手写自己的泛型List<T>之前,咱们先来看一下非泛型的缺点
非泛型的缺点:
1、大量类型转换
ArrayList AL=new ArrayList();
AL.Add(1); //存在装箱操作
2、运行时错误
ArrayList AL = new ArrayList();
AL.Add(1);
AL.Add("2");
foreach (int i in AL)
{
Console.WriteLine(i); //当遍历到第二个元素时就会报错,运行时错误
}
装箱就是将一个值类型转换成引用类型,耗费性能。
那么什么是泛型呢? 2.0 版 C# 语言和公共语言运行库 (CLR) 中增加了泛型。泛型将类型参数的概念引入 .NET Framework,类型参数使得设计如下类和方法成为可能:这些类和方法将一个或多个类型的指定推迟到客户端代码声明并实例化该类或方法的时候。例如,通过使用泛型类型参数 T,您可以编写其他客户端代码能够使用的单个类,而不致引入运行时强制转换或装箱操作的成本或风险。
泛型的简单理解就是把类型当成参数:
到这里,我们看到自定义的泛型集合能正常使用,除了List<T>的一些方法没实现外,其他的都能满足需求了,感兴趣的朋友可以做一做,欢迎和我交流。。。。。