0

一言で言えばc#5.0を読み始め、今はスタックとヒープの章にいます。GCがヒープオブジェクトでどのように機能するかの例があります。

StringBuilder ref1 = new StringBuilder ("object1");
Console.WriteLine (ref1);
// The StringBuilder referenced by ref1 is now eligible for GC.

したがって、Console.WriteLineの後でref1オブジェクトはGCの準備ができていると著者は言っていますが、プログラムの後半でref1オブジェクトを使用したい場合はどうなりますか?

4

2 に答える 2

4

オブジェクトへの参照を使用している限り、そのオブジェクトは収集の対象にはなりません。この例のポイントはref1、コードからアクセスされなくなったため、この後の任意の時点でオブジェクトを収集できることを示すことです。

于 2013-01-30T03:06:28.927 に答える
1

コンパイラはref1へのリンクがないことを認識しているため、未使用としてマークします。コンパイラがref1を別の方法で使用する場合は、それを認識して存続させます。J. Richterには、「.NET CLR viaC#」という素晴らしい本があります。彼は本の中で多くのことを説明しています

于 2013-01-30T03:05:03.310 に答える