将新的(新)对象实例添加到列表中

时间:2014-05-14 19:37:41

标签: c# list

这是一个非常类似的问题c# creating new instances of a object in a for loop,但遗憾的是我的问题略有不同。我也没有随机使用。

我有类似的设置:

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;
}

我的问题是,最后,我内心没有单独的蜡烛实例。尽管我使用的是&#34; new&#34;每一次。

我如何100%确定我将新蜡烛列入名单?

编辑:感谢所有回答,但我能够找到自己的问题。在我使用的课程中,变量是静态。这意味着每个类实例都具有相同的值。因此,如果我将A设置为等于50,则所有类都有50个。

对不起,如果它不清楚,但那段代码不是我的。我没有使用随机,我刚发布了这个例子,因为它与我在代码中的设置类似。我有一个循环和一个列表,并正在向它添加实例。

2 个答案:

答案 0 :(得分:3)

  

我的问题是,最后,我没有单独的实例   里面的蜡​​烛。它们对每个元素都是相同的蜡烛 -

嗯,它们不是同一个实例,它们都有相同的值,原因是new Random().Next,您可以通过在for循环外声明Random实例然后使用它来生成值。

Random random = new Random();
for (int i = 0; i < can; i++)
{
    Candle dp = new Candle();
    dp.x = random.Next(0000, 9999);
    dp.y = random.Next(0000, 9999);
    dpl.Add(dp);
}

答案 1 :(得分:1)

  

尽管我每次都使用“新”,但它们对于每个元素都是相同的蜡烛。

不,他们不是。您在每个元素上都有不同的对象实例,每个对象实例都具有相同的xy值,因为you're creating random numbers in a loop, all of which will have the same seed

通过在循环之后只改变其中一个值,并且只看到那个值不同,您可以轻易地看到您没有相同的对象实例。

相关问题