Quanto segue non può essere compilato:di prova per l'uguaglianza al valore predefinito
public void MyMethod<T>(T value)
{
if (value == default(T))
{
// do stuff
}
}
Errore: Operator '==' cannot be applied to operands of type 'T' and 'T'
Non posso usare value == null
perché T
può essere una struct.
Non riesco a utilizzare value.Equals(default(T))
perché value
può essere null
.
Qual è il modo corretto di verificare l'uguaglianza con il valore predefinito?
risposto per commentare; e per informazioni, 'EqualityComparer' è l'implementazione standard utilizzata dal BCL, ad esempio in 'Dictionary <,>'. –
possibile duplicato di http://stackoverflow.com/questions/65351/null-or-default-comparsion-of-generic-argument-in-c-sharp – nawfal