C#锐利体验2.0:泛型编程
李建忠
www.lijianzhong.com
上海祝成科技 高级讲师
Agenda
•C#泛型及机制
• 泛型类型
• 泛型方法
• 泛型约束
• 讲座总结
•Q&A
C#泛型演示
class Stack<T> {
private T[] store;
private int size;
public Stack() {
store = new T[10]; size = 0;
}
public void Push(T x) {
store[size++] = x; }
public T Pop() {
return store[--size];
}
}
C#泛型简介
Stack<int> x = new Stack<int>();
x.Push(17);
• 所谓泛型,即通过参数化类型来实现在同一份代
码上操作多种数据类型。泛型编程是一种编程范
式,它利用“参数化类型”将类型抽象化,从而实
现更为灵活的复用。
•C#泛型赋予了代码更强的类型安全,更好的复
用,更高的效率,更清晰的约束。
C#泛型机制简介
•C#泛型能力由CLR在运行时支持,区别于C++的
编译时模板机制,和Java的编译时“搽拭法”。这
使得泛型能力可以在各个支持CLR的语言之间进
行无缝的互操作。
•C#泛型代码在被编译为IL代码和元数据时,采用
特殊的占位符来表示泛型类型,并用专有的IL指
令支持泛型操作。而真正的泛型实例化工作以
“on-demand” 的方式,发生在JIT编译时。