泛型介绍总结

泛型类和泛型方法通过将参数类型指定特定的占位符T,在实例化的时候根据实际情况替换参数类型.

泛型优缺

使用泛型类型可以最大限度地重用代码、保护类型安全性以及提高性能。

泛型最常见的用途是创建集合类。

.NET Framework 类库在 System.Collections.Generic 命名空间中包含几个新的泛型集合类。 应尽可能使用这些类来代替某些类,如 System.Collections 命名空间中的 ArrayList。

可以创建自己的泛型接口、泛型类、泛型方法、泛型事件和泛型委托。

可以对泛型类进行约束以访问特定数据类型的方法。

在泛型数据类型中所用类型的信息可在运行时通过使用反射来获取。

泛型的使用

GenericList<T>为一个泛型类。可以实例化多个泛型实例:如

GenricList<int> list=new GenericList<int>();

GenericList<string> list=new GenericList<string>();

csharp类定义和转换(CSharpnet泛型的使用与介绍)(1)

举例说明:

csharp类定义和转换(CSharpnet泛型的使用与介绍)(2)

上述约束使用在泛型类的定义的时候可以使用Employee类的属性。、

此外可以泛型类、泛型方法可能不知一个泛型参数,如void ConsoleWrite(T t,U u)因此可能对多个泛型参数进行约束:

csharp类定义和转换(CSharpnet泛型的使用与介绍)(3)

泛型数组

csharp类定义和转换(CSharpnet泛型的使用与介绍)(4)

泛型的default关键字

泛型类与泛型方法中的参数类型T可能为值类型,可以可能是引用类型

T 为引用类型时,语句 t = null 才有效;

T 为数值类型而不是结构时,语句 t = 0 才能正常使用。

为了克服泛型中这个 问题,使用 default 关键字,此关键字对于引用类型会返回 null,对于数值类型会返回零。 对于结构,此关键字将返回初始化为零或 null 的每个结构成员,具体取决于这些结构是值类型还是引用类型。

csharp类定义和转换(CSharpnet泛型的使用与介绍)(5)

,