In Java, you can use private members of inner class in enclosing class. In C#, their accessibility should be at least internal.
Also in Java, non-static members of enclosing class, can be used in inner classes, whereas in C#, an instance of enclosing class is required. We pass enclosing instance through inner class constructor.
[Java]
public class A { public void method1() { InnerA ia = new InnerA(); ia.methodInnerA(); } public void method2() { } public class InnerA { private void methodInnerA() { method2(); } } }
[C#]
public class A { public void method1() { InnerA ia = new InnerA(); ia.methodInnerA(); } public void method2() { } public class InnerA { A A; public InnerA(A enclosing) { this.A = enclosing; } internal void methodInnerA() { A.method2(); } } }
