using System; using System.Collections.Generic; class C { static int Test (List arg) { return 10; } static int Test (string arg) { return 9; } static int Test (int arg) { return 8; } static R Method (IEnumerable t, Func a) { return a (default (T)); } static R Method2 (IEnumerable t, Func, R> a) { return a (default (List)); } public static int Main () { if (Method (new int[] { 1 }, Test) != 8) return 1; if (Method2 (new int[] { 1 }, Test) != 10) return 2; return 0; } }