假设我有一些类实现了一些接口
public class A : I
{
public void DoSomething()
{
// Some implementation
}
}
public class B : I
{
public void DoSomething()
{
// Some other implementation
}
}
public interface I
{
void DoSomething();
}
每个班级的列表
var listA = new List<A>();
var listB = new List<B>();
除了为每个列表分别执行DoSomething
之外,还有其他方法可以执行foreach
吗?如果是这样,那么最好的方法是什么(最好参考性能和内存使用方式)呢?
答案 0 :(得分:4)
试试这个:
foreach(var item in listA.OfType<I>().Concat(listB.OfType<I>()))
item.DoSomething();
答案 1 :(得分:1)
有一个:
var list = new List<I>();
并添加到它:
list.Add(new A());
list.Add(new B());
然后:
list.ForEach(x=>x.DoSomething());
您可以这样做,因为A
和B
共享公共接口I
答案 2 :(得分:0)
King King的答案的简短形式
listA.Concat(listB.OfType<I>()).ToList().ForEach(a=>a.DoSomething());