Duplicar posibles:
Why are my privates accessible?
Why are private fields private to the type, not the instance?¿Por qué los miembros privados de una instancia de clase están disponibles en el cuerpo del método Equals()?
Lo más probable es que me falta un hecho evidente, pero realmente no puedo ver la razón:
Cuando sobrescribir los métodos equals () método y cuando echo el objeto a mi tipo, soy capaz de llame a es miembros privados sin ningún problema!
Estoy inicializando una instancia y espero que sus miembros privados no sean accesibles.
¿Pero por qué el objeto casted me abre sus partes privadas en el método Equals()?
Ver la implementación Iguales en el código de ejemplo siguiente y ver cómo Estoy llegando a los campos privados en el "que" ejemplo:
public class Animal
{
private string _name;
private int _age;
public Animal(int age, string name)
{
_name = name;
_age = age;
}
public override bool Equals(object obj)
{
var that = (Animal) obj;
//_name and _age are available on "that" instance
// (But WHY ???)
return
this._age == that._age
&& this._name == that._name;
}
}
class Program
{
static void Main(string[] args)
{
var cat1 = new Animal(5, "HelloKitty");
var cat2 = new Animal(5, "HelloKitty");
Console.Write(cat1.Equals(cat2));
Console.Read();
}
}
Ha intentado modificar estas variables, para cambiar su valor, frío, por favor intente y responda si está funcionando o no. – Burimi