c# - 在 C# 中,是否可以循环遍历相同基类型的多个集合?

标签 c# collections .net-2.0

假设类“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/

相关文章:

Java 7 - "Comparison method violates its general contract!"

c# - 如何将 HashSet<T> 用作字典键?

ruby-on-rails - 如何对集合使用部分布局? rails

c# - 使用 C# 捕获 nslookup shell 输出

c# - 如果 x86 构建,则 Nunit.exe 无法在 Vista 64 位上运行

c# - 使用 C# 连接到网站的 SOAP API

c# - 如何在库实现中冒泡/处理 C# 异常

c# - 是否可以转换类型参数?

c# - Auth0,具有授权扩展和 ASP.NET 授权

c# - 谁能告诉我为什么这个 SQL 查询不起作用