0

クラスのMySQLデータベース用のクライアントプログラムを作成しています.フォームクラスの上部でいくつかの変数を宣言しており、フォームの存続期間全体で使用および再利用しています。変数が使用されるたびに、私は単に次のようなことをしています:

variableName = new VariableClass();

次に、主に DataSets/Tables で使用します。私が疑問に思っているのは、別の new 呼び出しを行う前にメモリを明示的に解放する必要があるか、それとも C# がそれを処理してくれるのでしょうか?

4

2 に答える 2

5

C# で .Net オブジェクトを明示的に解放する必要はありません。ガベージ コレクション環境である CLR で実行されるため、アイテムはクリーンアップされます。

そうは言っても...これらをフィールドまたはローカルとして割り当てているかどうかは、あなたの質問からは不明です。それらをフィールドに割り当て、それらを 1 つの関数でのみ使用する場合は、その宣言をローカルに移動する必要があります。メモリがリークすることはありませんが、オブジェクトを必要以上に長く保持することになります。これにより、アプリケーションのメモリ フットプリントが不必要に増加します。

于 2013-03-29T21:31:34.373 に答える
0

変数のクラスが何をするかによって異なります。破棄が必要なリソースを使用する場合、または管理されていないリソースを使用する場合は、IDisposable を実装し、それらが正しく破棄されるようにする必要があります。そうでない場合は、ガベージ コレクターに任せることができます。

于 2013-03-29T21:37:16.020 に答える