У меня сложилось впечатление, что к частным нестатическим переменным можно получить доступ только с помощью методов, вызываемых на объекте, в котором находятся переменные, но это не так. Не мог бы кто-нибудь объяснить причину, по которой следующие компилируются и запускаются?
public class Sandbox {
private String _privateString = "unmodified";
public static void setPrivateString(String str, Sandbox s) {
s._privateString = str;
}
public String toString()
{
return _privateString;
}
public static void main(String[] args) {
Sandbox s = new Sandbox();
setPrivateString("modified", s);
System.out.println(s);
}
}
Вывод:
modified
РЕДАКТИРОВАТЬ: То же самое верно и в C #.