有关泛型的优缺点在网上有很多篇文章,也足以说明问题,我就不去复制粘贴了(而且内容有些多),由于记性不太好,所以自己做个简单明了的总结。
泛型的优点主要有两个:
- “性能”
- “安全”
性能从何谈起?很简单,看个粟子。
//装箱与拆箱操作很容易使用,但是对性能的损失较大,尤其是遍历许多项时非泛型 var list = new ArrayList(); list.Add(4); //boxing 装箱操作 int i1 = (int)list[0];//unboxing- convert a reference to a value type 拆箱操作 foreach (int i2 in list) { Console.WriteLine(i2);//unboxing 拆箱操作 } //泛型 var list = new List<int>(); list.Add(4);//no boxing 不需要装箱操作,因为value的type在List<int>中已经指定。 int i1 = list[0];//不需要再使用(int)进行拆箱操作。 foreach (int i2 in list) { Console.WriteLine(i2);//不再需要拆箱操作。 }
安全性,指的是类型安全
//非泛型 var list = new ArrayList(); list.Add(44); list.Add("String"); list.Add(new Class()); //没有指定类型的情况下,集合中可以添加任意的类型,添加时不会有异常,但是在遍历时会引发异常 //泛型 var list = new List<int>(); list.Add(44); list.Add("String"); //compile time error