假设我有这样的课程:
class Base { }
class A : Base { }
class B : Base { }
class C : Base { }
这样的对象:
A a = new A();
List<B> bs = new List<B>();
List<C> cs = new List<C>();
是否可以创建包含对其他列表的引用的新列表(以便更改反映在原始项目中? 如:
void modifyContents(List<Base> allItems) {
//modify them somehow where allItems contains a, bs and cs
}
答案 0 :(得分:3)
您无法在其他列表中添加/删除/替换项目,但可以修改其他列表中的项目。
List<Base> baseList = new List<Base>();
baseList.Add(a);
baseList.AddRange(bs);
baseList.AddRange(cs);
// now you can modify the items in baseList
答案 1 :(得分:2)
IEnumerable<Base>
List<Base>
实例
醇>
<强>示例强>
class Base
{
public string Id { get; set; }
}
List<B> bs = new List<B>() { new B() };
List<C> cs = new List<C> { new C(), new C() };
var common = new List<Base>(bs.OfType<Base>().Concat(cs.OfType<Base>()));
// bs[0] will be updated
common[0].Id = "1";
// cs[0] will be updated
common[1].Id = "2";
// cs[1] will be updated
common[2].Id = "3";