Мне нужно проверить общий объект на null или по умолчанию (T). Но у меня есть проблема... В настоящее время я сделал это вот так:
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
}
Но потом я в конечном итоге повторяю себя... что мне не нравится. Проблема заключается в следующем:
thing == null;
Здесь ReSharper предупреждает о возможном сравнении типа значения с 'null'.
thing == default(T);
Здесь я получаю ошибку компилятора: не могу применить оператор '==' к операндам типа 'T' и 'T'.
thing.Equals(null|default(T));
thing
может, очевидно, быть нулевым (вот почему я должен проверить!), поэтому вызовет исключение NullReferenceException.
null|default(T).Equals(thing);
null и значение по умолчанию (T) очень часто равно null...
Есть ли чистый способ сделать это?