假设类“Apple”、“Banana”和“Orange”都继承自“Fruit”。
现在假设我们有成员变量列表 -
List<Apple> mApples;
List<Banana> mBananas;
List<Orange> mOranges;
我们能否形成一个循环来执行与以下等价的操作?
foreach( Fruit fruit in mApples, mBananas, mOranges )
{
fruit.Slice();
}
我使用的是 .net 2.0。
最佳答案
你必须连接列表
foreach(Fruit fruit in mApples.Cast<Fruit>()
.Concat(mBananas.Cast<Fruit>())
.Concat(mOranges.Cast<Fruit>()))
{
fruit.Slice();
}
编辑
这将是一个可能的 2.0 解决方案
foreach(Fruit fruit in Concat<Fruit>(mApples, mBananas, mOranges))
{
fruit.Slice();
}
public static IEnumerable<T> Concat<T>(params IEnumerable<T>[] arr)
{
foreach (IEnumerable col in arr)
foreach (T item in col)
yield return item;
}
关于c# - 在 C# 中,是否可以循环遍历相同基类型的多个集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5797248/