質問: frm.プロパティ名2; frm.ShowDialog(); } ``` ご質問があります。 上記のようなプログラムを開始すると 2回目のfrm.ShowDialog()のところで 破棄されたオブジェクトにアクセスできません。 とエラーが出て止まります。 自分的には frm.プロパティ名1; のところでエラーが出て止まると思っていたのですが そうはなりませんでした。 理由を説明していただけないでしょうか、お願いします。
回答: Disposeの役割はC++のdelete,Cのfreeなどのようなメモリ解放処理とはちょっと役割が違います。 何をするかは各クラスに任されていますが、 たとえば ・巨大なメモリの開放 ・アンマネージリソースの開放(なんかのハンドラやファイルのクローズとか) のような事をします。 逆に言えばただの変数はそのまま残っている可能性もありますので、 そういったものにアクセスは可能な場合もあります。 ただ、一般的にはDispose後はプロパティ含め、触らないほうが良いです。 参考までにFormのDisposeのソースを載せておきます。 。