基本概念
创建泛型集合类(如 List<T>)的实例时,需将“T”替换为列表将包含的对象类型。 例如,字符串列表表示为 List<string>
,Customer
对象列表表示为 List<Customer>
。 泛型列表属于强类型,与将其元素存储为 Object 的集合相比,泛型列表具备更多优势。 如果尝试将 Customer
添加到 List<string>
,则会在编译时收到错误。 泛型集合易于使用的原因是不必执行运行时类型转换。这个和arrayList相比在编译前就知道类型是是否正确,arrayList是在运行时知道错误。还有一个就是arrayList有转换的问题有失效率
IEnumerable<T> 是一个接口,通过该接口,可以使用 foreach
语句来枚举泛型集合类。 泛型集合类支持 IEnumerable<T>,正如非泛型集合类(如 ArrayList)支持 IEnumerable。
泛型约束:
通过约束类型参数,可以增加约束类型及其继承层次结构中的所有类型所支持的允许操作和方法调用的数量:这样做的目的是可以在泛型类中直接操作约束类的方法和属性
基类约束告诉编译器,仅此类型的对象或派生自此类型的对象可用作类型参数:就是类型参数可以为约束条件类和约束条件类的派生类