c# – 将列表转换为列表

虽然我们可以继承基类/接口,为什么我们不能声明一个List<>
使用相同的类/接口?

interface A
{ }

class B : A
{ }

class C : B
{ }

class Test
{
    static void Main(string[] args)
    {
        A a = new C(); // OK
        List<A> listOfA = new List<C>(); // compiler Error
    }
}

有没有办法?

最佳答案
使这个工作的方法是迭代列表和铸造元素。这可以使用ConvertAll:

List<A> listOfA = new List<C>().ConvertAll(x => (A)x);

你也可以使用Linq:

List<A> listOfA = new List<C>().Cast<A>().ToList();

转载注明原文:c# – 将列表转换为列表 - 代码日志