如何在C#中创建更多相同对象的实例?

时间:2018-01-18 15:32:05

标签: c# object copying

有一个简单的代码:

class Test
{
    public int number;
    public void method()
    {
        Console.WriteLine("Something");
    }
}

class Program
{
    public static void Main(string[] args)
    {
        while(true)
        {
            Test obj=new Test();
            obj.number=3;
        }           
    }
}

此程序设置"数字"在每个时刻obj到3。但我想自动创建一个完全另一个独特的对象,其中包含每个循环中原始对象的内容副本。如果我创建一个具有相同名称的对象,它将被覆盖。 当然,我不想在无限循环中使用它,这将毫无意义,但这是解释我问题的最简单方法。

2 个答案:

答案 0 :(得分:1)

您每次迭代都会创建新对象,但您只能继续引用最后创建的对象。

public static void Main(string[] args)
{
    var myOjects = new List<Test>();

    int startIndex = 1;

    while(true)
    {
        Test obj=new Test();
        obj.number=startIndex;

        myObjects.Add(obj);

        startIndex = startIndex + 1;

        if (startIndex > 5) break;
    }           
}

现在您可以查看列表中的所有对象:

foreach (var obj in myObjects) obj.method();

答案 1 :(得分:0)

有几种方法可以做到这一点。

我的第一个想法是使用工厂方法(它只返回一个类的实例)。它看起来像这样。

public Test TestFactory()
{
    return new Test() { number = 3 };
}

或者在Test类中添加一个构造函数,该类带有一个Test实例:

// inside Test class
public Test(Test that)
{
    number = that.number;
}