I need to check a generic object for null, or default(T). But I have a problem... Currently I have done it like this:
if (typeof(T).IsValueType)
{
if(default(T).Equals(thing))
// Do something
else
// Do something else
}
else
{
if(thing == null)
// Do something
else
// Do something else
}
But then I end up repeating myself... which I don't like. The problem is the following:
thing == null;
Here ReSharper warns about Possible compare of value type with 'null'.
thing == default(T);
Here I get compiler error: Cannot apply operator '==' to operands of type 'T' and 'T'.
thing.Equals(null|default(T));
thing
can obviously be null (that's why I have to check!), so will cause NullReferenceException.
null|default(T).Equals(thing);
null and default(T) is very often null as well...
Is there a clean way to do this??