当我们集合可以包含在类似ArrayList这样的类中,但这些集合是没有类型化的,所以需要把object项转换为集合中实际存储的对象类型.继承自system.Object的任何对象都可以存储在ArrayList中,所以要特别仔细,假定包含在集合中的某些类型可能导致抛出异常,代码逻辑,前面介绍的技术可以处理这个问题,包括检查对象类似所需要的代码,但是,更好的解决办法是一开始就使用强类型化的集合类.这种集合类派生于CollectioonBase,并可以拥有自己的方法,来添加,输出和访问集合的成员,但它可能把集合成员限制为派出于某种基本类型,或者必须支持某个接口.
这会带来一个问题,每次创建需要包含在集合中的新类时,就必须执行下述任务之一;
1.使用某个集合类,这个类已经定义为可以包含新类型的项;
2.创建一个新的集合类,它可以包含新类型的项,实现所有需要的方法.
一般情况下,新的类型需要额外的功能,我们常常并不需要新的集合类,创建集合类也会花费大量时间.
另一方面,泛型类大大简化了这个问题,泛型类是以实例化过程中提供的类型或类为基础建立的,可以毫不费力地对对象进行强类型化,对于集合,创建T类型对象的集合只需它用一行代码写出来即可.