使用泛型将child转换为parent

本文关键字:转换 parent child 泛型 | 更新日期: 2023-09-27 18:11:32

Class a <T> {
   public T j;
}
class b:a <int> {
}

如果这不是一个泛型,那么你可以这样做:

a foo = new b();

是否对泛型情况做同样的处理?

有更好的方法吗?

使用泛型将child转换为parent

您可以使用:

a<int> foo = new b();

您需要在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();
public static void Main()
{
    Base<int> foo = new Derived();
}
class Base<T>
{
    public T data;
}
class Derived:Base<int>
{
}