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

标签 c# object

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

谢谢

    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;

    }

最佳答案

您没有为随机生成器播种。您应该在对 next 的所有调用中共享相同的随机实例:

var randomGenerator = new Random(DateTime.Now.Milliseconds);

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

dp.x = randomGenerator.Next(0000, 9999);
dp.y = randomGenerator.Next(0000, 9999);

这样,你们都为生成器播种了一些东西,每次调用 next 都应该生成一个新的“随机”数字。

关于c# 在 for 循环中创建对象的新实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5717517/

相关文章:

java - 改变对象的值

c# - 如何从另一个 DLL 中的对象获取类型?

c# - 如何以这种 System.Text.Json 序列化方式添加字典排序?

c# - 使用 iText7 和 ASP.NET C# 在 PDF 文件的页脚中添加页码

c# - 结合 NotifyIcon 和 ToolTip

javascript - 重置或清除 Javascript 对象的正确方法?

javascript - 删除对象数组中的重复元素 Javascript

c# - 使用聚合从 mongodb 中的 order by 和 group by 联合选择

c# - 如何在运行时在 SQLServer 模式下为 sessionState 更改 sqlConnectionString?

c++ - 在C++中创建一个没有名字的对象