Necesito comprobar un objeto genérico para nulo, o predeterminado (T). Pero tengo un problema ... Actualmente lo he hecho así:C#: alternativa a GenericType == null
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
}
Pero entonces me acaban de repetir lo mismo ... lo que no me gusta. El problema es el siguiente:
thing == null;
Aquí ReSharper advierte sobre la posible comparación del tipo de valor con 'nulo'.
thing == default(T);
Aquí me sale error de compilación: No se puede aplicar el operador '==' a operandos de tipo 'T' y 'T'.
thing.Equals(null|default(T));
thing
, obviamente, puede ser nulo (es por eso que tengo que comprobar!), Por lo que hará que NullReferenceException.
null|default(T).Equals(thing);
nulo y predeterminado (T) es muy a menudo nulo, así ...
¿Hay una manera limpia de hacer esto ??
No sabía que eso fuera posible. – configurator
y eso funcionará si ambos son nulos? – Svish
Lo hace. Revisar no es tan difícil, Svish ... – configurator