组合迭代器

时间:2018-09-20 11:18:45

标签: c# operator-overloading extension-methods ienumerable

我实现了一个类,该类将多个IEnumerable对象合并为一个IEnumerable对象,因此我可以编写:

foreach (SomeType item in new CombinedEnumerable<SomeType>(it1, it2))
{
   ...
}

其中it1和it2实现IEnumerable 接口。出于审美原因和代码清晰起见,我希望能够编写以下内容:

foreach (SomeType item in it1 + it2)
{
   ...
}

我所需要做的就是实现此运算符:

public static IEnumerable<T> operator +(IEnumerable<T> t1, IEnumerable<T> t2)
{
    return new CombinedEnumerable<T>(t1, t2);
}

但是编译器不允许我这样做,因为定义必须在IEnumerable 类内。 有解决方法吗?

编辑:可能的重复项“如何将两个IEnumerable连接到一个新的IEnumerable?”没有解决问题。我已经解决了这一部分。我要问的是如何实现“ +”运算符(也许作为扩展方法),这似乎是不可能的。

0 个答案:

没有答案