有一个简单的代码:
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。但我想自动创建一个完全另一个独特的对象,其中包含每个循环中原始对象的内容副本。如果我创建一个具有相同名称的对象,它将被覆盖。 当然,我不想在无限循环中使用它,这将毫无意义,但这是解释我问题的最简单方法。
答案 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;
}