2017-07-16 32 views
0

这里是我的代码:阵列中的for循环给数组索引超出范围异常

ShopButton[] allButtons = FindObjectsOfType<ShopButton>(); 

for (int i = 0; i < allButtons.Length; i++) 
{ 
    allButtons [i].UpdateButtonState ((GameDataManager.publicInstance.skinAvailability & 1 << allButtons [i - 1].ninjaNumber) == 1 << allButtons [i - 1].ninjaNumber); 
} 

当我运行这段代码给了我一个IndexOutOfRangeException

+1

因为第一环上,'i'将为0和'I - 1'将为-1,这是不适合的阵列的有效折射率。 –

+1

变化来回环路以开始1而不是零:对(INT I = 1;我 jdweng

+0

我已经尝试i-1和类似@IanH。说i-1导致索引是-1,导致相同的错误... – RaZ

回答

2

我想原因是因为导致问题的第一指标。 如果我从1开始,那么i-1将为0,因此索引0存在于数组allbuttons中。 显然:如果i开始是0,然后i-1将是-1;这将导致index out of range exception,因为所有数组以索引0开始并且没有索引-1。 ;

i = 1开始,错误将被解决,因为那么i-1将是0这是在任何数组的索引范围内。环的

变化部分:

for (int i = 1; i < allButtons.Length; i++) 
+0

顺便说一句,谁提供更好的解释将接受他们的答案,而不是这个,因为它给出了一个非常有限的解释(没有冒犯,我是还在为你的帮助 – RaZ

+0

非常感谢的是,清晰的 – henrybbosa

+0

是的,非常感谢,虽然它并没有解决我在做什么在我的代码,我开始与我= 0,但从来没有使用过我 - ?1 ... – RaZ