nested class, static class, etc

class A {
    public class B {
        public void method(A a) {
            a.field = 10; // OK
            field = 10; // error
        }
    }
    
    private int field;
}

BはAのprivate, protectedなフィールドにアクセスできるけど、Aのインスタンスが必要。

class A {
    public static class B {
        ...
    }
    ...
}

Javaっぽく勘違いしそうになるけど、Bはstatic "nested class"ではなくて、nested "static class"になる。C#のstaticクラスというのはメンバ(フィールドとメソッド)が全てstaticにしか宣言できなくなるクラスのこと。