在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只等于最后一个值。通过一些测试,我发现这只发生在循环中。如果我在循环外更改值,则不会发生这种情况。请帮助!

在for循环中,每次迭代都会覆盖整个数组'

我怀疑数组多次包含相同的对象,即:

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)

检查