Использование LINQ Zip с замыканием, которое не возвращает значение

Отказ от ответственности: этот вопрос вызван моим личным любопытством больше, чем реальной необходимостью что-то сделать. Так что мой пример будет надуманным. Тем не менее, я думаю, что это проблема, которая вполне может возникнуть.

Допустим, мы используем Zipдля перебора двух последовательностей, вызывая метод void, который просто выдает исключение, если один элемент пары отличается от другого (поэтому отбрасывается любое возвращаемое значение). ). Дело здесь не в том, что метод выдает исключение, а в том, что он возвращает void.

Другими словами, мы как бы делаем ForEachнад двумя коллекциями (кстати, я знаю, что Эрик Липперт думает о ForEach, и полностью соглашайтесь с ним и никогда не используйте его).

Теперь Zipхочет Func, поэтому, конечно, передача чего-то эквивалентного Actionвыиграла. т работать.

Мой вопрос: есть ли идиоматический способ, который лучше, чем этот (т.е. возвращает фиктивное значение)?

var collection1 = new List() { ... };
var collection2 = new List() { ... };

collection1.Zip(collection2, (first, second) => 
{
    VoidMethodThatThrows(first, second);
    return true;
});

11
задан s.m. 19 February 2019 в 07:55
поделиться