对于泛型的理解

如果希望构建一个集合容器,会用到ArrayList array = new ArrayList();

ArrayList有几个缺点:1 无法保证容器中的类型安全(类型一致问题)

2 存进arralist的数据,CIL会自动进行装箱,也就是保存进ArrayList中的都将是Object类型;(进行了不必要的撞向拆箱问题)

关于问题1的解释:

而泛型的出现,解决了上面两个问题

一般情况下,存进array通常都是同一种类型。但ArrayList无法去控制类型相同,也就是说,下面这段代码不会抛出异常:

string newstring = "Hello World";

int i ;

Car car = new Car("carname"); // 一个假设的类

array.Add(a);

array.Add(i);

array.add(car);

假设要控制这个array去存储相同的类型,只能够用如下类来实现:

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> 可以省去前两次的装箱/拆箱动作。

转载于:https://www.cnblogs.com/huangwj21/archive/2010/07/22/1783193.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值