将类的所有对象放在列表中

时间:2013-02-18 15:10:50

标签: c# list

我在c#中有一个类,叫做C.当我执行程序时,我创建了这个类的新的obejcts。在某些时候,我需要创建一个列表List<C> listC = new List();,其中我放置了我创建的所有对象。 当然,我可以在创建此对象后使用list.Add为每个对象添加。但由于某些原因难以解释,我更愿意将所有已创建的thiiss类的对象添加到列表中。

这有可能吗?我不确定是否有解决方案: - )。

提前感谢所有回答的人。

3 个答案:

答案 0 :(得分:2)

您需要的是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
    }
}

答案 1 :(得分: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);
    }

}

如果您将列表设置为静态,则可以在不通过列表的情况下离开。

答案 2 :(得分:0)

解决这个问题的办法可能是这样的:
找不到特定类型的所有对象是不可能的,你可以做的是从头开始构建和维护这个列表。您可以通过创建“工厂”方法来创建新的c对象,将其添加到语音列表,然后返回它的引用。 “工厂”功能和列表可能(也许应该)是单身,取决于你将如何使用它。