Comparação nula ou padrão de argumento genérico em C #
Tenho um método genérico definido assim:
public void MyMethod<T>(T myArgument)
A primeira coisa que quero fazer é verificar se o valor de myArgument é o valor padrão para esse tipo, algo como isto:
if (myArgument == default(T))
Mas isso não é compilado, porque não garanti que T implementará o operador ==. Então mudei o código para isso:
if (myArgument.Equals(default(T)))
Agora isso compila, mas falhará se myArgument for nulo, o que é parte do que estou testando. Posso adicionar uma verificação nula explícita como esta:
if (myArgument == null || myArgument.Equals(default(T)))
Agora isso parece redundante para mim. O ReSharper está sugerindo que eu mude a parte nula myArgument == para myArgument == default (T), que é onde eu comecei. Existe uma maneira melhor de resolver esse problema?
Eu preciso apoiarambo referencia tipos e tipos de valo