Duplicar posible:
Can’t operator == be applied to generic types in C#?¿Cómo comparar dos elementos del mismo tipo genérico sin restricciones para la igualdad?
Tengo la siguiente clase genérica y el compilador se queja de que "Operator '!=' cannot be applied to operands of type 'TValue' and 'TValue'
" (ver CS0019):
public class Example<TValue>
{
private TValue _value;
public TValue Value
{
get { return _value; }
set
{
if (_value != value) // <<-- ERROR
{
_value= value;
OnPropertyChanged("Value");
}
}
}
}
Si yo constriñe TValue
a class
, podría usar Object.Equals()
. Como necesito esto para ambas estructuras y clases, estaría muy feliz si pudiera evitar eso.
Entonces la pregunta es, ¿cómo puedo comparar dos elementos del mismo tipo genérico pero sin restricciones para la igualdad?
¿Por qué no puede usar .Equals para los tipos de valor? –
De manera predeterminada, si llama a "object.Equals (a, b)" en los tipos de referencia, se llamará a "object.ReferenceEquals (a, b)". – TcKs
@TcKs: de forma predeterminada, no puede estar seguro de si Igual ha sido anulado en una clase derivada. – leppie