using System; interface IA { } class C : IA { void Foo () where T : class, IA { Func m = l => { T i = default (T); if (l == i) { Func m2 = () => i; m2 (); } return i; }; m (null); } public static int Main () { var c = new C (); c.Foo (); return 0; } }