我班上有两个集合,我有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;。
答案 0 :(得分:0)
我认为您正在寻找的这种方法不存在。 如果您只想以标准方式枚举两个集合(返回第一个集合的每个项目,然后返回第二个集合的相同项目),我认为您可以使用Enumerable.Concat扩展方法。我不知道你怎么能以更高效的方式做到这一点 您可以看到Enumerable.Concat method implementation
如果你想以非标准的方式枚举集合(有多种方法可以枚举这两个集合)我认为你是唯一可以做到的,.net框架无法为每种方式提供实现枚举两个集合。