使用泛型将孩子投射到父母身上

时间:2011-10-18 22:17:22

标签: c# generics polymorphism

Class a <T> {
   public T j;
}

class b:a <int> {

}

如果这不是通用的,那么您可以执行以下操作:

a foo = new b();

无论如何都要对通用案例做同样的事情吗?

有更好的方法吗?

3 个答案:

答案 0 :(得分:5)

您可以使用:

a<int> foo = new b();

答案 1 :(得分:1)

您需要在a中声明的通用参数:

class a<T>
{
    public T j;
}

您还需要b能够从a派生出来:

class b<T> : a<T> { }

然后您可以将b<T>投射到a<T>

a<int> foo = new b<int>();

或者您可以从特定的a

派生
class b : a<int> { }

然后施放:

a<int> foo = new b();

答案 2 :(得分:0)

public static void Main()
{
    Base<int> foo = new Derived();
}

class Base<T>
{
    public T data;
}

class Derived:Base<int>
{
}