如何将基类型列表转换为派生类型列表

2023-12-12

从派生类到基类,似乎存在许多相反的问题,但我的问题是如何将基类型列表转换为派生类型列表?

public class MyBase {
    public int A;
}

public class MyDerived : MyBase {
    public int B;
}

public void MyMethod() {
    List<MyBase> baseCollection = GetBaseCollection();
    List<MyDerived> derivedCollection = (List<MyDerived>)baseCollection; // Which doesn't work
}

我最终得到的解决方案不是很优雅。

public class MyBase {
    public int A;
}

public class MyDerived {
    public int B;
    public MyBase BASE;
}
public void MyMethod() {
    List<MyBase> baseCollection = GetBaseCollection();
    List<MyDerived> derivedCollection = new List<MyDerived>();
    baseCollection.ForEach(x=>{
        derivedCollection.Add(new derivedCollection(){ BASE = x});
    });
}

一定会有更好的办法...


您可以使用 Linq 方法OfType<MyDerived>(), e.g.:

List<MyDerived> derivedCollection = baseCollection.OfType<MyDerived>().ToList();

它将删除所有不属于的项目MyDerived虽然上课

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将基类型列表转换为派生类型列表 的相关文章

随机推荐