泛型是指那些处理不同类型值的类和方法泛型的讨论是一个比较高级的主题虽然有些泛型较高级而有些相当简单事实上在购物车中已经使用了泛型的一个特性回忆一下CartItem和ShoppingCart(使用CartItem作为一个集合)这两个类如何组成了购物车
本章前面介绍的许多集合都提供了对象(Object类型)的存储空间由于它们用于处理Object数据类型因此实际上集合可以保存任何数据类型然而在从集合中取出记录项时它们通常需要从Object数据类型转换成简单数据类型这包括进行额外的编码和简化性能另一个问题是由于集合可以保存任何数据类型也就是说可以在集合中保存任何数据类型如果使用一个集合来保存CartItem对象实际上就可以在同一个集合中保存字符串数字日期等数据类型例如
Dim _items As New List()
Dim item As New CartItem()
_itemsAdd(item)
_itemsAdd(this isnt a cart item)
_items
Add(
)
在从集合中取出记录项时您并不知道它是何种数据类型除非您在输入到列表中时记录了它是哪个对象
为了解决这个问题可以使用泛型或更加明确的泛型集合它们都被保存在SystemCollectionsGeneric命名空间中购物车使用的其中一个就是List:
Private _items As List(Of CartItem)该语句简单声明了少_items是一个List但它只是CartItem对象的一个列表因此现在可以执行
Dim _items As New List()
Dim item As New CartItem(…)
_itemsAdd(item)
但由于该列表是一个明确的数据类型因此不能执行以下操作
_itemsAdd(this isnt a cart item)
_itemsAdd()
这两行代码都会产生编译时错误无论何时在需要一个自定义类的集合时最好使用泛型集合因为它们提高了代码的可读性减少了潜在的错误并且提供了比标准集合更好的性能
ASPNET 入门教程完整版