Статические члены
Поскольку никто до сих пор не упомянул об этом: В зависимости от вашей ситуации , если переменная-член также может быть статической , вы можете просто получить к ней доступ следующим образом.
class OuterClass
{
private static int memberVar;
class NestedClass
{
void SomeFunction() { OuterClass.memberVar = 42; }
}
}
Sidenote: Я целенаправленно (и избыточно) пометил memberVar
как private
, чтобы проиллюстрировать данную способность вложенного класса получать доступ к закрытым членам своего внешнего класса.
Внимание / Пожалуйста, примите во внимание
В некоторых ситуациях это может быть самый простой способ / обходной путь для получения доступа, но ...
Static также означает, что переменная будет общей для всех объектов экземпляра, со всеми имеющимися недостатками / последствиями (потокобезопасность и т. Д.)
Static также означает, что это, очевидно, не будет работать, если у вас более одного экземпляра класса родителя, и переменная должна содержать индивидуальное значение для каждого экземпляра
Так что в большинстве случаев вы можете пойти другим путем ...
Передача ссылки
Как и предлагало большинство людей (и потому что это также самый правильный ответ), вот пример передачи ссылки на экземпляр внешнего класса.
class OuterClass
{
private int memberVar;
private NestedClass n;
OuterClass() { n = new NestedClass(this); }
class NestedClass
{
private OuterClass parent;
NestedClass(OuterClass p) { parent = p; }
SomeFunction() { parent.memberVar = 42; }
}
}