using System; using System.Collections.Generic; internal delegate void EmptyDelegate (); class BaseObject { public static int Main () { int? i; Query (out i); return 0; } static void Closure (EmptyDelegate x) { } static List Query (out int? count) where T : BaseObject { count = 0; List results = new List (); Closure (delegate { results.Add (MakeSomething ()); }); return results; } static T MakeSomething () where T : BaseObject { return null; } }