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

本文关键字:循环 覆盖 我的 为什么 | 更新日期: 2023-09-27 17:59:42

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]在循环的第二次迭代中发生变化?

我的循环有什么问题吗?

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

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

因此,当slides[1]正在改变时,slides[0]也在改变。