c#在for循环中创建对象的新实例

sam*_*sam 3 c# object

我正在尝试在for循环中创建一个自定义对象的新实例,如果我添加一个断点,我可以看到对象和属性发生变化,它返回x个不同的蜡烛对象.但是,如果我删除断点,List中返回的所有对象都是相同的.有任何想法吗?

谢谢

    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;

    }
Run Code Online (Sandbox Code Playgroud)

Tej*_*ejs 7

你没有播种你的随机发生器.你应该在所有对next的调用中共享相同的随机实例:

var randomGenerator = new Random(DateTime.Now.Milliseconds);
Run Code Online (Sandbox Code Playgroud)

然后,只需调用一个生成器:

dp.x = randomGenerator.Next(0000, 9999);
dp.y = randomGenerator.Next(0000, 9999);
Run Code Online (Sandbox Code Playgroud)

通过这种方式,您既可以为生成器播种,也可以在每次调用next时生成一个新的"随机"数字.

  • Sam正在播种RNG,但使用相同的种子(时间),因为循环非常快.因此,为蜡烛的每个实例生成相同的数字 (2认同)