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にしか宣言できなくなるクラスのこと。