C# for循环中的数组导致数组索引超出范围异常

C# for循环中的数组导致数组索引超出范围异常,c#,arrays,unity3d,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].ni

这是我的密码:

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);
}
ShopButton[]allButtons=FindObjectsOfType();
for(int i=0;iallButtons[i].UpdateButtonState((GameDataManager.publicInstance.skinAvailability&1我认为原因是第一个索引导致了问题。
如果我以1开头,那么i-1将是0,因此索引0存在于数组allbuttons中。
显然:如果起始i是
0
,则
i-1
将是
-1
;这将导致
索引超出范围异常,因为所有数组都以索引
0
开始,并且没有索引-1

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

将循环的一部分更改为:

for (int i = 1; i < allButtons.Length; i++) 
for(int i=1;i
我认为原因是第一个索引导致了问题。 如果我以1开头,那么i-1将是0,因此索引0存在于数组allbuttons中。 显然:如果起始i是
0
,则
i-1
将是
-1
;这将导致
索引超出范围异常,因为所有数组都以索引
0
开始,并且没有索引-1

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

将循环的一部分更改为:

for (int i = 1; i < allButtons.Length; i++) 
for(int i=1;i
因为在第一个循环中,
i
将为0,
i-1
将为-1,这不是数组的有效索引。将fro循环更改为从1开始,而不是从零开始:for(int i=1;ii
将为0,
i-1
将为-1,这不是数组的有效索引。将fro循环更改为从1开始,而不是从零开始:for(int i=1;i