using System; public class MainClass { static long? X (T a1, Func a2) where T : struct { return 0; } static int? X (T a1, Func a2) { return 0; } static double? X (T a1, Func a2) { return null; } public static void Main () { int? sum = X (1, i => { if (i > 0) return i; return null; }); int? sum2 = X (1, i => { if (i > 0) return i; return null; }); } }