为什么我的值在这个循环中被覆盖
本文关键字:循环 覆盖 我的 为什么 | 更新日期: 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]
也在改变。