9

これは非常にばかげた質問だと思いますが、調べてみたところ、次の質問に対する答えが見つかりませんでした。これに光を当てる答えを本当に感謝します。

1) 同じメソッド内で新しいオブジェクトをインスタンス化する場合、前のオブジェクトはどうなりますか。例:

DataTable dataTable = new DataTable();
dataTable = new DataTable(); // Will the previously created object be destroyed and memory freed?

2) (1) と同じ質問ですが、静的変数に関するものです。例:

static private DataView dataView;

private void RefreshGridView()
{
    dataView = new DataView(GetDataTable()); // Will the previously created objects be destroyed and memory freed?
    BindGridView();
}

ありがとう!

4

3 に答える 3

1

オブジェクトは C# の参照変数です。つまり、メモリ参照を格納します。

したがって、オブジェクトを再割り当てするときは、それが保持していた以前の値 (メモリ参照) を上書きするだけです。以前の値はガベージ コレクションの対象になりました。そのメモリを解放するのがガベージ コレクターの仕事です。静的を含むすべての種類の変数についても同じです

于 2013-04-19T16:40:14.700 に答える