C#学习笔记(二十七)-- 泛型的含义

  基本集合可以包含在诸如ArrayList的类中,但这些集合是没有类型化的,所以需要把object项转换为集合中实际存储的对象类型,继承自System.Object的任何对象都可以存储在ArrayList中,所以要特别仔细。假定包含在集合中的某些类型可能导致抛出异常,而且代码逻辑崩溃。千米那介绍的技术可以处理这个问题,包括检查对象类型所需的代码。

  但是更好的解决办法是一开始就使用强类型化的集合类。这种集合类派生于CollectionBase,并可以拥有自己的方法,来添加、删除和访问集合的成员,但它可能把集合成员限制为派生于某种基本类型,或者必须支持某个接口。这回带来一个问题,每次创建需要包含在集合中的新类时,就必须执行下列任务之一:

  1)使用某个集合类,该类已经定义为可以包含新类型的项。

  2)创建一个新的集合类,它可以包含新类型的项,实现所有需要的方法。

  一般情况下,新的类型需要额外的功能,所以常常需要用到新的集合类,因此创建集合类会花费大量事件。

  另一方面,泛型类大大简化了这个问题。泛型类是以实例化过程中提供的类型或类为基础建立的,可以毫不费力地对对象进行强类型化。

  泛型不只涉及集合,但集合特别适合使用泛型。创建一个泛型类,就可以生成一些方法,它们的签名可以强类型化为我们需要的任何类型,该类型甚至可以是值类型或引用类型,处理各自的操作。还可以把用于实例化泛型类的类型限制为支持某个给定的接口,或者派生自某种类型,从而只允许使用类型的一个子集。泛型并不限于类,还可以创建泛型接口、泛型方法(可以在非泛型类上定义),甚至泛型委托。浙江极大地提高代码的灵活性,正确使用泛型可以显著缩短开发时间。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值