我试图在for循环中创建一个自定义对象的新实例,如果我添加一个断点,我可以看到对象和属性发生了变化,它返回了x个不同的candle对象。但是,如果我删除断点,列表中返回的所有对象都是相同的。有什么想法吗?
谢谢
public List<candle> Getcandles(int can)
{
List<candle> dpl = new List<candle>();
for (int i = 0; i < can; i++)
{
candle dp = new candle();
dp.x = new Random().Next(0000, 9999);
dp.y = new Random().Next(0000, 9999);
dpl.Add(dp);
}
return dpl;
}发布于 2011-04-19 22:02:30
您在每次迭代中实例化一个新的Random()。由于循环进行得如此之快,每个Random()对象基本上都以相同的值开始,这将产生相同的结果。
将您的代码更改为类似于:
public List<candle> Getcandles(int can) {
List<candle> dpl = new List<candle>();
Random generator = new Random();
for (int i = 0; i < can; i++) {
candle dp = new candle();
dp.x = generator.Next(0000, 9999);
dp.y = generator.Next(0000, 9999);
dpl.Add(dp);
}
return dpl;
} https://stackoverflow.com/questions/5717517
复制相似问题