是否有组合枚举器可供使用

本文关键字:组合 枚举 是否 | 更新日期: 2023-09-27 18:05:30

我在我的类有两个集合,我有工作的GetEnumerator方法。我也想为我的类提供GetEnumerator,在这种意义上,首先在第一个集合之后进行枚举,然后进行第二次枚举。

有准备使用一些ComboEnumerator类在c# ?

给好奇的人一点背景——第一个集合来自我对Dictionary的实现,第二个集合实际上只是一个元素,可选的,封装在数组中。我想提供枚举器的类是NullDictionary,它是从第一个Dictionary派生出来的。所以我在找:

public override IEnumerator<KeyValuePair<K, V>> GetEnumerator()
{
    if (nullValue.HasValue)
        return ComboEnumerator.Create(
            new []{new KeyValuePair<K, V>(null, nullValue.Value)}.GetEnumerator(),
                base.GetEnumerator());
    else
        return base.GetEnumerator();
}

更新:我有我自己的实现,这不是一个问题"如何实现XYZ"

是否有组合枚举器可供使用

我认为您正在寻找的方法不存在。如果您只想以标准方式枚举两个集合(返回第一个集合的每个项目,然后第二个集合的项目相同),我认为您可以使用Enumerable。Concat扩展方法。我看不出你怎样才能做得更好。
你可以看到Enumerable。Concat方法实现

如果你想以一种非标准的方式枚举集合(有多种方法枚举这两个集合),我认为你是唯一可以做到的,.net框架不能为每种方法枚举两个集合提供实现。