小编典典

转换列表列出

all

虽然我们可以从基类/接口继承,但为什么我们不能声明一个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
    }
}

有办法吗?


阅读 62

收藏
2022-06-11

共1个答案

小编典典

完成这项工作的方法是遍历列表并转换元素。这可以使用 ConvertAll 来完成:

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

你也可以使用 Linq:

List<A> listOfA = new List<C>().Cast<A>().ToList();
2022-06-11