Null checking a generic type
If you try the following :

class Program
{
    static void Main(string[] args)
    {
        Foo&lt;string&gt;(null);
        Foo&lt;string&gt;("asd");
        Foo&lt;int&gt;(1);
        Console.ReadKey();
    }

    public static void Foo&lt;T&gt;(T test)
    {
        if(test == null)
        {
            Console.WriteLine("ho ho it's null");
            return;
        }

        Console.WriteLine(test.GetType());
    }
}


You will realize that both the options are, excuse me, useless. The language already supports this behavior and if T is a struct, test == null will simply return false all the time.