泛型是 2.0 版 C# 语言和 公共语言运行库 (CLR) 中的一个新 功能。泛型将类型参数的概念引入 .NET Framework,类型参数使得设计如下类和方法成为可能:这些类和方法将一个或多个类型的指定推迟到客户端代码声明并实例化该类或方法的时候。例如,通过使用泛型类型参数 T,您可以编写其他客户端代码能够使用的单个类,而不致引入运行时强制转换或装箱操作的成本或风险,
// Declare the generic class
public class GenericList<T>
{
void Add(T input) { }
}
class TestGenericList
{
private class ExampleClass { }
static void Main()
{
// Declare a list of type int
GenericList<int> list1 = new GenericList<int>();
// Declare a list of type string
GenericList<string> list2 = new GenericList<string>();
// Declare a list of type ExampleClass
GenericList<ExampleClass> list3 = new GenericList<ExampleClass>();
}
}
使用泛型类型可以最大限度地重用代码、保护类型的安全以及提高性能。
泛型最常见的用途是创建集合类。
.NET Framework 类库在 System.Collections.Generic 命名空间中包含几个新的泛型集合类。应尽可能地使用这些类来代替普通的类,如 System.Collections 命名空间中的 ArrayList。
您可以创建自己的泛型接口、 泛型类、泛型方法、泛型事件和泛型委托。
可以对 泛型类进行约束以访问特定数据类型的方法。
关于泛型 数据类型中使用的类型的信息可在运行时通过反射获取。
01-初识泛型
0101-缓冲区问题
0102-在缓冲区中存储object
0103-缓冲类代码的复制和粘贴
泛型0104-泛型缓冲区类
0105-细说泛型
02-泛型集合
0201-List集合
0202-Queue队列
0203-Stack栈
0204-HashSet集合
0205-LinkedList集合
0206-Dictionary集合
0207-排序的集合
03-泛型类和接口
0301-缓冲区接口
0302-新建缓冲区类
0303-优化原始的缓冲区类
0304-缓冲区接口实现IEnumerableT泛型接口
0305-泛型集合实现的泛型接口
0306-比较泛型集合中的对象
0307-优化有关泛型集合的项目
04-泛型方法和泛型委托
0401-泛型方法
0402-扩展方法
0403-泛型委托
0404-常用泛型委托
0405-Converter泛型委托
0406-事件和泛型
05-泛型约束、协变和逆变
0501-创建存储库和泛型约束
0502-提交数据到存储库并查询
0503-接口约束
0504-泛型中的约束
0505-泛型中的协变
0506-泛型中的逆变
06-泛型和反射
0601-通过反射获取泛型实例
0602-通过反射调用泛型方法
0603-自定义容器
0604-解析简单类型
0605-反射在构造方法中的应用
0606-未绑定的泛型
07-泛型小结
0701-泛型和枚举
0702-泛型中数学运算符问题
0703-有关泛型和父类以及静态变量的问题