List<T>
es un tipo de referencia que no sobrecargue operator==
. Por lo tanto, usa la semántica de igualdad de referencia predeterminada. Parece tener la impresión de que anula operator==
para proporcionar una semántica de valores, pero no es así. a
equivaldrá a b
cuando a
y b
ambos se refieren a la misma instancia List<T>
.
EDITAR: Así que miré la especificación yo mismo. Dice:
La clase List declara dos operadores, operator == y operator! =, Y por lo tanto da un nuevo significado a las expresiones que aplican esos operadores a las instancias List. Específicamente, los operadores definen la igualdad de dos instancias de la Lista como la comparación de cada uno de los objetos contenidos usando sus métodos Equals. El siguiente ejemplo usa el operador == para comparar dos instancias de lista.
Honestamente ... No tengo ni idea de qué están hablando, pero esto no parece ser correcto. Por lo que puedo decir después de ejecutar algunas pruebas, la clase List<T>
usa igualdad de referencia. Buena pregunta.
EDIT2: Descompilado List<T>
, no operator==
y/o operator!=
sobrecarga. La especificación parece ser completamente incorrecta en este caso.
Por favor, explique su pregunta con más claridad – darnir
Por favor, no diga "Salidas" para "Me gustaría que .." :) –
@pst Este código es copiado y pegado literalmente de la especificación del lenguaje, junto con el comentario. – dasblinkenlight