泛型类声明不能使用system.attribute作为直接或间接基类。
在一个类声明中指定的基接口可以是构造接口类型(§20.5)。基接口自身不能是类型参数,但在其作用域内可以包含类型参数,下面的代码演示了如何实现和扩展构造类型。
class c<u,v>{}
interface i1<v>{}
class d:c<string , int>,i1<string>{}
class e<t>:c<int,t> ,i1<t>{}
泛型类型声明的基接口必须满足§20.3.1中所描述的唯一性规则。
从基类或接口重写或实现方法的类的方法,必须提供特定类型的合适方法。下面的代码演示了方法如何被重写和实现。这将会在§20.1.10中进一步解释。
class c<u,v>
{
public virtual void m1(u x , list<v> y){…}
}
interface i1<v>
{
v m2(v x);
}
class d:c<string , int>,i1<string>
{
public override void m1(string x , list<int> y){…}
public string m2(string x){…}
}
20.1.4泛型类的成员
泛型类的所有成员都可以直接地或者作为构造类型的一部分,从任何封闭类(enclosing class)中使用类型参数。当特定的封闭构造类型在运行时被使用时,类型参数的每次使用都由构造类型所提供的实际类型实参所代替。例如
class c<v>
{
public v f1;