免責事項: この質問は、何かを成し遂げるという実際の必要性というよりも、私の個人的な好奇心に突き動かされています。したがって、私の例は不自然になります。それにもかかわらず、それは非常によく発生する可能性がある問題だと思います。
Zipを使用して 2 つのシーケンスを反復処理し、ペアの 1 つのアイテムが他のアイテムと異なることが判明した場合に例外をスローする void メソッドを呼び出すとします (したがって、戻り値は破棄されます)。ここでのポイントは、メソッドが例外をスローすることではなく、void を返すことです。
言い換えれば、私たちはForEach
2 つ以上のコレクションを行っているようなものです (ちなみに、私はEric Lippert が何を考えてForEach
いるかを知っており、彼に完全に同意し、それを使用することはありません)。
さて、Zip
が必要なFunc<TFirst, TSecond, TResult>
ので、もちろん に相当するものを渡すことAction<TFirst, TSecond>
はできません。
私の質問は次のとおりです:これよりも優れた慣用的な方法はありますか(つまり、ダミー値を返す)?
var collection1 = new List<int>() { ... };
var collection2 = new List<int>() { ... };
collection1.Zip(collection2, (first, second) =>
{
VoidMethodThatThrows(first, second);
return true;
});