Acabo de notar algo de lo que nunca me he dado cuenta. Resulta que esta clase es válida en C#:miembro privado accesible desde otras instancias de la misma clase
class Foo
{
private string contents;
public Foo(string str) {
contents = str;
}
public void set(Foo other)
{
contents = other.contents;
}
}
Así que diferentes instancias de la misma clase pueden tener acceso a los miembros privados de uno al otro.
Hasta ahora, pensaba que un objeto solo podía acceder a los miembros privados de un objeto, no a otras instancias de la misma clase. Es un poco sorprendente descubrir esto.
¿Es este el caso en todos los lenguajes orientados a objetos comunes? No es intuitivo para mí.
Resulta que alguien ya hizo una pregunta bastante similar: http://stackoverflow.com/questions/346127/access-private-member-variable-of-the-class-using-its-object-instance?rq= 1. Sin embargo, las respuestas a eso no dan una razón autoritativa para esta elección de diseño. ¿Es solo porque hacerlo de manera diferente es ineficiente/imposible? – Oliver