Объединение итераторов - PullRequest
       22

Объединение итераторов

0 голосов
/ 20 сентября 2018

Я реализовал класс, который объединяет несколько объектов 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?"не решил проблему.Эту часть я уже решил.Я просил, как реализовать оператор «+» (возможно, в качестве метода расширения), что, по-видимому, невозможно.

...