我有一个A类和一个B类,B类是从A类继承的。 假设我有:
A a1 = new B();
A a2 = new B();
List<A> LA = new List<A>{a1, a2};
请帮我看看如何将List转换为List。我尝试使用List<B> LB = (List<B>)LA
但是编译错误"Can't convert List<A> to List<B>"
。
请帮帮我。感谢。
注意:仅限.NET 2.0。感谢。
答案 0 :(得分:5)
您必须在列表中投射每个项目,而不是整个列表。
List<A> listA = new List<A>();
List<B> listB = new List<B>();
for (int i = 0; i < listA.Count; i++)
{
listB.Add((B)listA[i]);
}
答案 1 :(得分:2)
如果您使用的是.NET 2.0,那么我相信您会在列表中枚举并独立地投射每个元素。使用.NET 3.5,您可以使用“选择”扩展方法将它们全部转换为一行代码。
答案 2 :(得分:1)
你可以这样做:
List<A> la = new List<A>();
List<B> lb = new List<B>();
foreach( A a in la )
{
if (a is B)
lb.Add((B)a);
else
{
// ignore or throw an exeption
}
}
答案 3 :(得分:0)
你可以尝试一下这些行吗?
LA.ForEach(delegate(A emp) { emp = (B)emp; });