for循环中的数组使数组索引超出范围异常

时间:2017-07-16 20:16:10

标签: c# arrays unity3d

这是我的代码:

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 个答案:

答案 0 :(得分:2)

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

i = 1开始,错误将被解决,因为i-1将是0,它位于任何数组的索引范围内。

将循环的一部分更改为:

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