У меня есть общий метод, определенный следующим образом:
public void MyMethod<T>(T myArgument)
Первое, что я хочу сделать, это проверить, является ли значение myArgument значением по умолчанию для этого типа, например:
if (myArgument == default(T))
Но это не скомпилируется, потому что я не гарантировал, что T реализует оператор ==. Поэтому я переключил код на это:
if (myArgument.Equals(default(T)))
Теперь это скомпилируется, но не будет выполнено, если myArgument равно null, что является частью того, что я тестирую. Я могу добавить явную нулевую проверку следующим образом:
if (myArgument == null || myArgument.Equals(default(T)))
Теперь это кажется лишним для меня. ReSharper даже предполагает, что я изменяю значение myArgument == null в myArgument == default (T), с которого я начал. Есть ли лучший способ решить эту проблему?
Мне нужно поддерживать и типы ссылок и типы значений.