オブジェクトがいつガベージコレクションできるようにマークされているかという問題を説明するためのいくつかのニアコード --
class ToyBox
{
public List<Toy> Toys = new List<Toy>();
}
class Factory
{
public ToyBox GetToys()
{
ToyBox tb = new ToyBox();
tb.Toys.Add(new Toy());
tb.Toys.Add(new Toy());
return tb;
}
}
main()
{
ToyBox tb = Factory.GetToys();
// After tb is used, does all the memory get cleaned up when tb goes out of scope?
}
Factory.GetToys() はメモリを割り当てます。そのメモリはいつクリーンアップされますか?Factoy.GetToys() が ToyBox オブジェクトを返すとき、ToyBox オブジェクトへの唯一の参照は main() 内のものであると想定しているため、その参照が範囲外になると、Toy オブジェクトと ToyBox オブジェクトはガベージ コレクションの対象となります。 .
そうですか?洞察をありがとう...