public static class Foo<T> where T : class
public static Func<T, T, bool> Compare() {
return (a, b) => object.ReferenceEquals(a, b);
public static void Main()
var comparer = Foo<string>.Compare();
Console.WriteLine(comparer(a, b));
Console.WriteLine(comparer(a, b));