arg)という風に定義されています。ジェネリックで第1パラメーターがT型、第2パラメーターがTresult型になっています。第1パラメーターで受け取った型が処理の引数に第2パラメーターで受け取った型が処理の戻り値になります。Ienumerableインターフェースに追加されている拡張メソッドににはこのような記述があります。predicate)Func<Tsource,int,bool>とあります。Funcデリゲートの型パラメーターは2つまで受け取り可能だと思っていたのですがここでは3つ型パラメーターを指定しています。これはどうしてでしょうか?理由を教えてください。15:03:13)FuncとActionは、大量の引数違いのものが定義されています。ここでは3つ型パラメーターを指定しています。Funcデリゲートは最後のパラメータが戻り値でそれより前は引数に相当します。3つのものであれば2つの引数をもつ関数に相当します。ここでは3つ型パラメーターを指定しています。最後の型パラメーターが戻り値で、それより前は引数の型です。以降では0〜16個の実装があります。さんが指摘されていますね。共変性/反変性についても触れさせてください。以降では問題ありません。TResult>』表記でした。TResult>』表記です。指定は、『反変』であることを意味します。指定は、『共変』であることを意味します。専用であることを示しますが、これについては下記が参考になると思います。IEnumerable>>>>Funcデリゲートの型パラメーターは2つまで受け取り可能だと思っていたのですが>>ここでは3つ型パラメーターを指定しています。それより前は引数の型です。以降では0〜16個の実装があります。さんが指摘されていますね。共変性/反変性についても触れさせてください。以降では問題ありません。TResult>』表記でした。TResult>』表記です。指定は、『反変』であることを意味します。指定は、『共変』であることを意味します。これについては下記が参考になると思います。http://ufcpp.net/study/csharp/sp4_variance.htmlなるほどわかりましたみなさん、丁寧な解説ありがとうございます。