using System; using System.Collections.Generic; class C { public static void Foo (IEnumerable a) { } public static void Foo (IEnumerable a, Func> b) { } public static void Foo (IEnumerable a, Func> b) { } public static void Foo (Func> b) { } public static void Main () { int[] a = new int [] { 1 }; Foo (a); Foo (a, (int i) => { return a; }); Foo (a, (int i, int[] b) => { return a; }); Foo ((int[] b) => { return a; }); } }