在c#中,是否可以循环遍历相同基类型的多个集合?
本文关键字:类型 基类 集合 遍历 是否 循环 | 更新日期: 2023-09-27 17:53:22
假设'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;
}
ArrayList list = new ArrayList();
list.AddRange( mApples );
list.AddRange( mBananas );
list.AddRange( mOranges );
foreach( Fruit item in list )
{
item.Slice();
}