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

如何在C#中创建同一对象的更多实例?,c#,object,copying,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

有一个简单的代码:

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。但我想创建一个完全不同的、唯一的对象,在每个循环中自动复制原始对象的内容。如果我使用相同的名称创建一个对象,它将被覆盖。
当然,我不想在无休止的循环中使用它,它将毫无意义,但这是解释我的问题的最简单的方法。

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

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

public Test TestFactory()
{
    return new Test() { number = 3 };
}
或将构造函数添加到接受测试实例的测试类:

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

每次迭代都会创建新对象,但只保留对上次创建的对象的引用

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;
    }           
}

您在每个循环中创建新对象,因为块范围,每个循环使用
obj
变量创建一个对象,并在循环结束时销毁它,然后在下一个勾号中重新创建它…您为什么要问这个问题?这可能会帮助别人帮助你。
foreach (var obj in myObjects) obj.method();