Мне нужно проверить универсальный объект на ноль или значение по умолчанию (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 и default (T) также очень часто null ...
Есть ли чистый способ сделать это ??