Lo siguiente no se compila:de prueba para la igualdad en el valor predeterminado
public void MyMethod<T>(T value)
{
if (value == default(T))
{
// do stuff
}
}
error: Operator '==' cannot be applied to operands of type 'T' and 'T'
No puedo utilizar value == null
porque T
puede ser una estructura.
No puedo usar value.Equals(default(T))
porque value
puede ser null
.
¿Cuál es la forma correcta de probar la igualdad del valor predeterminado?
respondió al comentario; y para información, 'EqualityComparer' es la implementación estándar utilizada por el BCL, por ejemplo en 'Dictionary <,>'. –
posible duplicado de http://stackoverflow.com/questions/65351/null-or-default-comparsion-of-generic-argument-in-c-sharp – nawfal