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;i allButtons[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