相关疑难解决方法(0)

如何创建具有继承的泛型类?

如何使以下代码有效?我不认为我完全理解C#泛型.也许,有人可以指出我正确的方向.

    public abstract class A
    {
    }

    public class B : A
    {
    }

    public class C : A
    {
    }

    public static List<C> GetCList()
    {
        return new List<C>();
    }

    static void Main(string[] args)
    {
        List<A> listA = new List<A>();

        listA.Add(new B());
        listA.Add(new C());

        // Compiler cannot implicitly convert
        List<A> listB = new List<B>();

        // Compiler cannot implicitly convert
        List<A> listC = GetCList();

        // However, copying each element is fine
        // It has something to do with generics (I think) …
Run Code Online (Sandbox Code Playgroud)

c# inheritance covariance contravariance

1
推荐指数
1
解决办法
1099
查看次数

标签 统计

c# ×1

contravariance ×1

covariance ×1

inheritance ×1