gpt4 book ai didi

c# - for 循环中的每次迭代都会覆盖整个数组的值

转载 作者:可可西里 更新时间:2023-11-01 10:54:39 24 4
gpt4 key购买 nike

我有一个 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)

检查

关于c# - for 循环中的每次迭代都会覆盖整个数组的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22532820/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com