C# 泛型
泛型其实也是类型方面的多态。可减少BOX和unBOX
• 所谓泛型,即通过参数化类型来实现在同一份代码上操作多种数据类型。泛型编程是一种编程范式,它利用“参数化类型”将类型抽象化,从而实
现更为灵活的复用。
• C#泛型赋予了代码更强的类型安全,更好的复用,更高的效率,更清晰的约束。
class C<U, V> {} //合法
class D: C<string,int>{} //合法
class E<U, V>: C<U, V> {} //合法
class F<U, V>: C<string, int> {} //合法
class G : C<U, V> { } //非法
C#除可单独声明泛型类型(包括类与结构)外,
也可在基类中包含泛型类型的声明。但基类如果
是泛型类,它的类型参数要么已实例化,要么来
源于子类(同样是泛型类型)声明的类型参数。
泛型接口
interface IList<T> {
T[] GetElements();
}
interface IDictionary<K,V> {
void Add(K key, V value);
}
// 泛型接口的类型参数要么已实例化,
// 要么来源于实现类声明的类型参数
class List<T> : IList<T>, IDictionary<int, T> {
public T[] GetElements() { return null; }
public void Add(int index, T value) { }
}
• C#泛型机制只支持“在方法声明上包含类型参
数”——即泛型方法
• C#泛型机制不支持在除方法外的其他成员(包括
属性、事件、索引器、构造器、析构器)的声明
上包含类型参数,但这些成员本身可以包含在泛
型类型中,并使用泛型类型的类型参数
• 泛型方法既可以包含在泛型类型中,也可以包含
在非泛型类型中

浙公网安备 33010602011771号