是否有组合枚举器可供使用
本文关键字:组合 枚举 是否 | 更新日期: 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框架不能为每种方法枚举两个集合提供实现。