在for循环中,每次迭代都会覆盖整个数组'
本文关键字:覆盖 数组 循环 for 迭代 | 更新日期: 2023-09-27 17:51:13
我有一个for循环,它遍历对象数组以设置绘制对象的值。下面是代码
for (int i = 0; i < screenBottom.Length; i++)
{
int newPostion = i * screenBottom[i].sourceRect.Width;
//go through sourceRect as we're using drawSimple mode
screenBottom[i].sourceRect.X = newPostion;
screenBottom[i].Draw(spriteBatch);
}
但是每次sourceRect的新值。X设置sourceRect的值。数组中所有对象的X被覆盖。到for循环结束时,所有sourceRect的值。X只等于最后一个值。通过一些测试,我发现这只发生在循环中。如果我在循环外更改值,则不会发生这种情况。请帮助!
我怀疑数组多次包含相同的对象,即:
SomeType[] screenBottom = new SomeType[n];
for(int i = 0 ; i < screenBottom.Length ; i++)
screenBottom[i] = theSameInstance;
您可以简单地用ReferenceEquals(screenBottom[0], screenBottom[1])
检查这一点-如果它返回true
,这就是问题。
注意它也可以的情况下,所有的数组项目是不同的,但他们都与相同的sourceRect
实例;你可以用ReferenceEquals(screenBottom[0].sourceRect, screenBottom[1].sourceRect)