对于泛型的理解
如果希望構(gòu)建一個集合容器,會用到ArrayList array = new ArrayList();
ArrayList有幾個缺點:1 無法保證容器中的類型安全(類型一致問題)
2 存進arralist的數(shù)據(jù),CIL會自動進行裝箱,也就是保存進ArrayList中的都將是Object類型;(進行了不必要的撞向拆箱問題)
關于問題1的解釋:
而泛型的出現(xiàn),解決了上面兩個問題
一般情況下,存進array通常都是同一種類型。但ArrayList無法去控制類型相同,也就是說,下面這段代碼不會拋出異常:
string newstring = "Hello World";
int i ;
Car car = new Car("carname"); // 一個假設的類
array.Add(a);
array.Add(i);
array.add(car);
假設要控制這個array去存儲相同的類型,只能夠用如下類來實現(xiàn):
public class CarCollection: IEnumberable
{
private ArrayList arCars = new ArrayList();
public CarCollection(){}
public Car GetCar(int pos)
{
return (Car)arCars[pos];?
}
public?void AddCar(Car c)
{
arCars.Add(c);
}
.......
}
假如有眾多的類需要類型安全的容器對象,則需要添加多個容器類,導致大量重復代碼以及困難的維護工作。
List<T>就可以解決這個問題。
?
關于問題2的解釋:
ArrayList array = new ArrayList();
array.Add(10); //裝箱
int i = (int)array[0]; //拆箱
Console.WriteLine("The Value of array[0] is" + i); //裝箱
想想一下,如果用List<int> 可以省去前兩次的裝箱/拆箱動作。
轉(zhuǎn)載于:https://www.cnblogs.com/huangwj21/archive/2010/07/22/1783193.html
總結(jié)
- 上一篇: 你值得掌握的 Git分支等 常用命令 (
- 下一篇: hdu 六度分离 floyd