0

私は C と呼ばれる C# のクラスを持っています。プログラムを実行している間、このクラスの新しいオブジェクトを作成します。ある時点で、作成したList<C> listC = new List();すべてのオブジェクトを配置するリストを作成する必要があります。もちろん、このオブジェクトを作成した後、各オブジェクトに対して list.Add を使用してこれを行うことができます。しかし、説明するのが難しい何らかの理由で、このクラスでこれまでに作成されたすべてのオブジェクトだけをリストに追加したいと思います。

これはどういうわけか可能ですか?解決策があるかどうかはわかりません:-)。

答えてくれたみんなに前もって感謝します。

4

3 に答える 3

3

必要なものはFactory Patternと呼ばれます。クラスを使用してクラスを構築し、構築されたものを追跡します。

public class CFactory
{
    public CFactory()
    {
        CreatedCBacking = new List<C>();
    }

    private List<C> CreatedCBacking;

    public IList<C> CreatedC
    {
        get
        {
             return CreatedCBacking.AsReadonly();
        }
    }

    public C NewC(String s, string t, bool b)
    {
       C temp = new C(s, t, b);
       CreatedCBacking.Add(temp);
       return temp;
    }

}

public class C
{
     public C(String s, string t, bool b)
     {
         //You class here
     }
}

使い方はこんな感じです

public static void Main()
{
    var factory = new CFactory();
    var c1 = factory.NewC("string", "string", true);
    var c2 = factory.NewC("string2", "string2", false);

    foreach(var c in factory.CreatedC)
    {
        //loops over c1 and c2
    }
}
于 2013-02-18T15:17:07.140 に答える
0

オブジェクトを作成するときに、リストに直接追加できます。次に例を示します。

List<C> list = new List<C>();

for(var i = 0; i < 10; i++) {
    list.Add(new C());
}

または、リストをクラスに渡して、それ自体を追加することもできます。

List<C> list = new List<C>();

public class C
{

    public C(List<C> list)
    {
        list.Add(this);
    }

}

リストを静的にすると、リストを渡さずに逃げることができます。

于 2013-02-18T15:13:14.847 に答える