多分、これが混乱させてる大元。*1 class変数を宣言するとき、、、 hoge h;みたいに書くわけですが、これが、C#とC++で90度くらい意味が違う。 C#の場合 classの場合は、必ず自由領域*2にインスタンスが存在するわけで、じゃあ、"h"とは何か?と言えば、何のことはなく単なるManaged Heapへの参照を保持しているにすぎないことになる。*3従って、インスタンスを作成するためには、new演算子でManage Heapに領域を確保して、クラスコンストラクタを走らせて初期化させた上で、インスタンスを作成する必要がある。 このようなことから、C#においちゃ、必ず以下のようになるわけで hoge h=new hoge(<なんちゃらかんちゃら>); //以下"h."でメンバにアクセス可能 //hに、他のインスタンスを参照させ直すことも可能 //hのスコープが外れても他で参照されて