以下に示すようにVisual StudioでのデフォルトのC#のテンプレートと同じように、私は静的オブジェクトとしてWindows Form
を定義しました:静的オブジェクト内で定義された非静的オブジェクトを処分する必要はありますか?
public static FormMain formMain;
static void Main()
{
formMain = new FormMain();
Application.Run(formMain);
formMain.Dispose();
}
あなたが見ることができるように、私は(new
を使用して)メモリ空間を割り当てられましたこの静的フォームを呼び出してから、フォームが閉じられた後でメモリを解放します(Dispose
を使用)。以下に示すように
しかし、この静的なフォーム内に、私は、非静的オブジェクト(たとえば、ラベル)のカップルを定義しました:
:public FormMain()
{
// some code here
Label myLabel1 = new Label();
Label myLabel2 = new Label();
Label myLabel3 = new Label();
// some code here
}
今、私は2つの質問をしました
Dispose
これらの非静的オブジェクトにも、またはformMain.Dispose();
行が呼び出されるとすぐにそれらが廃棄される(メモリが解放される)必要がありますか?私は、これらの非静的オブジェクトを配置する必要がある場合は、プログラムのどの段階で私は(
FormClosing
イベントFormClosed
にまたはで、など)Dispose
を使用することを好むでしょうか?
注:私は、Visual Studioでフォームデザイン機能を使用しないようにしよう、しかしラインでフォームのラインをコーディングすることを好みます。 Visual StudioでのデフォルトのC#のテンプレートのように
Application.Runは、この例のフォームを既に破棄しています。「FormクラスのDisposeメソッドは、[Application.Run]メソッドが返される前に呼び出されます。 – user2864740
私はフォームについて尋ねるのではなく、フォーム内で定義された非静的オブジェクト( 'myLabel1'、' myLabel2'など)を要求しています。 – ssd
'FormMain'は、作成したメンバ変数を破棄する必要があります。 FormMainが静的変数に格納されているかどうかは関係ありません。 –