为什么我的值会在这个循环中被覆盖?

时间:2014-04-22 23:29:55

标签: c# loops

for (var i = 0; i < entity.files[temp].slides.Count(); i++){
    entity.files[temp].slides[i].versions[0] = Program.optionNode.Attributes["cloudfrontLocation"].Value + "/" + customer + "/" + fileName + "/Slide" + (i+1) + "_v1.PNG";
    Console.WriteLine("after loop " + i + " value is " + entity.files[temp].slides[0].versions[0]);
    Console.WriteLine();
}

这导致这些日志:

  

循环0后的值是   https://xxxxxxxxxxx.cloudfront.net//xxxxxxxxxxxxx/xxxxxxxxxx/Slide1_v1.PNG

     

循环1后的值是   https://xxxxxxxxxxx.cloudfront.net//xxxxxxxxxxxxx/xxxxxxxxxx/Slide2_v1.PNG

     

循环2后的值是   https://xxxxxxxxxxx.cloudfront.net//xxxxxxxxxxxxx/xxxxxxxxxx/Slide2_v1.PNG

它应该是第一个循环,但我不知道为什么slides[0].versions[0]在第二次迭代时会发生变化,而它应该访问slides[1].versions[0]。我也正在记录i,以便您可以看到它发生了变化。

为什么值entity.files[temp].slides[0].versions[0]在循环的第二次迭代中发生变化?

我的循环有问题吗?

1 个答案:

答案 0 :(得分:0)

当值entity.files[temp].slides[0].versions[0]在循环的第一次和第二次迭代中仅更改 时,slides[0]slides[1]指向同一个对象。

因此,当slides[1]发生变化时,slides[0]也会发生变化。