我班上有两个具有工作GetEnumerator
方法的集合。我也想GetEnumerator
在这样的意义上提供我的课程:首先是在第一次收集后进行枚举,然后再进行第二次枚举。
准备好在ComboEnumerator
C#中使用某些类了吗?
好奇心的背景很少-第一个集合来自我对的实现Dictionary
,第二个集合实际上只是单个元素(可选),包装在数组中。我想为其提供枚举器的类是NullDictionary
从first派生的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框架无法为每种方式提供一种枚举两个集合的实现。 。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句