C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: お互いに参照しているクラスは消えるのでしょうか?


(過去ログ 82 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■48458 / inTopicNo.1)  お互いに参照しているクラスは消えるのでしょうか?
  
□投稿者/ ぬこ (1回)-(2010/04/07(Wed) 05:58:44)

分類:[.NET 全般] 

メモリについて初歩的な質問ですが、次のようなTestClassが消えるのか教えてください。
(ガベージコレクションで回収可能な状態)



Sample1メソッドを実行した場合
Test1のなかで作成されたlocalClassはTest1のメソッドを抜けても
呼び出しもとのSample1で参照されているので消えないのは理解できています。
またSample1を抜けたときに参照されているものが無くなるためにlocalClassが
消えるのも理解できています。


Sample2メソッドを実行した場合
Sample2を抜けたときにTestParentとTestChildはお互いに参照しているのですが
消えるのでしょうか?


public class TestClass
{
    public TestClass _parent;
    public TestClass _child;

    public TestClass() {}

    public TestClass Parent
    {
        set { _parent = value; }
        get { return _parent; }
    }

    public TestClass Child
    {
        set { _child = value; }
        get { return _child; }
    }
}
-------------------------------------------



void Sample1()
{
    TestClass a = Test1();
}

TestClass Test1()
{
    TestClass localClass = new TestClass();
    return localClass;
}

--------------------------------------------

void Sample2()
{
    TestClass a = Test2();
}

TestClass Test2()
{
    TestClass TestParent = new TestClass();
    TestClass TestChild = new TestClass();

    TestParent.Child = TestChild;
    TestChild.Parent = TestParent;

    return TestParent;
}

引用返信 編集キー/
■48461 / inTopicNo.2)  Re[1]: お互いに参照しているクラスは消えるのでしょうか?
□投稿者/ Azulean (541回)-(2010/04/07(Wed) 07:15:29)
GC に関しては以下を読んでみてください。

http://msdn.microsoft.com/ja-jp/library/bb985010.aspx
http://msdn.microsoft.com/ja-jp/library/dd297765.aspx
引用返信 編集キー/
■48463 / inTopicNo.3)  Re[2]: お互いに参照しているクラスは消えるのでしょうか?
□投稿者/ ぬこ (2回)-(2010/04/07(Wed) 08:49:18)
回答ありがとうございます。

リンク先のサイトを読んでみました。難しい言葉が多く全てを理解できたとは言えないのですが
理解を深めることが出来ました。

オブジェクトが参照されていると消えないと思っていたので、今回のような質問になってしまったのですが
アプリケーションから到達できなくなったオブジェクトがGCの対象になると言うことだったのですね。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -