如何在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();