クラス定義の循環参照

 .NETアセンブリは循環参照できない。これは、小さなまとまりの中にないクラス同士のクラス定義が循環参照した時点で設計ミスだという思想に基づいている。

 ポインタは循環参照してもかまわないが、クラス定義は循環参照してはいけない。この命題はおそらく常に正しいと思うのだが、いまだに理由が分からない。これはコンパイラの制限じゃない。クラス定義が循環参照していてもコンパイル自体は出来る。JavaC#のようにクラスをポインタとして扱えばC++でも出来るし、後でJITコンパイルするならクラス定義なんか後からはめこんでもかまわないくらいだ。