using System; using System.Linq.Expressions; struct S<T> where T : struct { public static int Test () { Expression<Func<T?, bool>> e = (T? o) => o == null; if (!e.Compile ().Invoke (null)) return 1; if (e.Compile ().Invoke (default (T))) return 2; Console.WriteLine ("OK"); return 0; } } class C { public static int Main() { return S<int>.Test (); } }