Disclaimer: questa domanda è guidata dalla mia curiosità personale più che da un effettivo bisogno di realizzare qualcosa. Quindi il mio esempio sarà ideato. Tuttavia penso che sia un problema che potrebbe benissimo emergere.Utilizzo di LINQ's Zip con una chiusura che non restituisce un valore
Diciamo che stiamo usando Zip per iterare su due sequenze, invocando un metodo di annullamento che solleva un'eccezione se un elemento della coppia risulta essere diverso dall'altro (quindi scartando qualsiasi valore di ritorno). Il punto qui non è che il metodo lancia un'eccezione, tanto quanto restituisce nulla.
In altre parole, stiamo facendo uno ForEach
su due raccolte (e, a proposito, so cosa Eric Lippert thinks about ForEach
).
Ora, vuole un Func<TFirst, TSecond, TResult>
, quindi ovviamente il passaggio equivalente a Action<TFirst, TSecond>
non funzionerà.
La mia domanda è: c'è un modo idiomatico migliore di questo (cioè restituire un valore fittizio)?
var collection1 = new List<int>() { ... };
var collection2 = new List<int>() { ... };
collection1.Zip(collection2, (first, second) =>
{
VoidMethodThatThrows(first, second);
return true;
});
correlati Eric Lippert post sul blog: http://blogs.msdn.com/b/ericlippert/archive/2009/06/29/the-void-is-invariant.aspx – AakashM