首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在c#循环中创建对象的新实例

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

Stack Overflow用户
提问于 2011-04-19 21:57:54
回答 4查看 4.1K关注 0票数 4

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

谢谢

代码语言:javascript
复制
    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;

    }
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-04-19 22:00:46

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

代码语言:javascript
复制
var randomGenerator = new Random(DateTime.Now.Milliseconds);

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

代码语言:javascript
复制
dp.x = randomGenerator.Next(0000, 9999);
dp.y = randomGenerator.Next(0000, 9999);

通过这种方式,您已经为生成器设定了种子,并且每次调用next都应该生成一个新的“随机”数。

票数 8
EN

Stack Overflow用户

发布于 2011-04-19 22:02:46

System.Random():来自MSDN

使用与时间相关的默认种子值初始化Random类的新实例

没有调试器,你就太快了。

试试这个:

代码语言:javascript
复制
public List<candle> Getcandles(int can)
{
    List<candle> dpl = new List<candle>();
    var rnd = new Random(DateTime.Now.Milliseconds);
    for (int i = 0; i < can; i++)
    {
        candle dp = new candle();
        dp.x = rnd.Next(0000, 9999);
        dp.y = rnd.Next(0000, 9999);              
        dpl.Add(dp);                

    }

    return dpl;

}
票数 1
EN

Stack Overflow用户

发布于 2011-04-19 22:02:30

您在每次迭代中实例化一个新的Random()。由于循环进行得如此之快,每个Random()对象基本上都以相同的值开始,这将产生相同的结果。

将您的代码更改为类似于:

代码语言:javascript
复制
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;
  } 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5717517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档