// Supported by C# 3.0 public class C { public delegate T Func<T> (T t); public static void Test<T, U> (Func<T> f, U u) { } public static void Main () { Test<int, string> (delegate (int i) { return i; }, ""); Test (delegate (int i) { return i; }, 1); } }