2017-07-16 132 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