是否有组合调查员可以使用?

时间:2015-07-30 14:52:21

标签: c# concatenation enumerator

我班上有两个集合,我有GetEnumerator方法。在这种意义上,我想为我的班级提供GetEnumerator,首先是在第一次收集后进行枚举,然后是第二次进行枚举。

是否已准备好在C#中使用某些ComboEnumerator类?

好奇心灵的小背景 - 第一个集合来自我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();
}

更新:我有自己的实施,这不是问题&#34;如何实施XYZ&#34;。

1 个答案:

答案 0 :(得分:0)

我认为您正在寻找的这种方法不存在。 如果您只想以标准方式枚举两个集合(返回第一个集合的每个项目,然后返回第二个集合的相同项目),我认为您可以使用Enumerable.Concat扩展方法。我不知道你怎么能以更高效的方式做到这一点 您可以看到Enumerable.Concat method implementation

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