InnerClass - mehdimo/janett GitHub Wiki

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();
        }
    }
}