
運行時,if是正常的,else報索引超出了陣列界限
uj5u.com熱心網友回復:
顯然陣列 Pib 和 enValue 不等長。Pib 比 enValue 要短,當 i 較大時存在 enValue[i] 而不存在 Pib[i]。uj5u.com熱心網友回復:
注銷所有代碼,就留一句賦值代碼,回圈一遍看是否超界。uj5u.com熱心網友回復:
無關if,else按你的描述,你不寫任何if else都會錯。
因為你假定了陣列一定85的長度。那么根據斷言編程,你首先應該斷言保證資料長度一定為85
if(enValue.Count()<85)
{
//例外,陣列長度小于85
}
或者寫成
for(i=0;i<enValue.count;i++)
uj5u.com熱心網友回復:
問題在于陣列越界,說明在越界的那個點,正好是 else,跟 else 本身無關,如果沒有 else,到那個點,一樣越界。uj5u.com熱心網友回復:
你說報錯,那你應該瞧瞧報的什么錯啊?索引超過陣列邊界?知道是什么錯誤后,你大概就不會問if else的問題了。
uj5u.com熱心網友回復:
pib陣列長度和回圈的一樣嗎uj5u.com熱心網友回復:
肯定是Pib陣列的長度小于enValue的長度可以這處理
int loopTimes = enValue.Length>Pib.Length?Pib.Length:enValue.Length;
for(int i=0; i<loopTimes; i++)
{
if (enValue[i]==1){
Pib[i].BackColor = Color.Yellow;
}
else{
Pib[i].BackColor = Color.Gray;
}
}
或者加try...catch也行
for(int i=0; i<85; i++)
{
try{
if (enValue[i]==1){
Pib[i].BackColor = Color.Yellow;
}
else{
Pib[i].BackColor = Color.Gray;
}
}
catch{
//
}
}
uj5u.com熱心網友回復:
謝謝各位,問題解決了轉載請註明出處,本文鏈接:https://www.uj5u.com/net/269034.html
標籤:C#
下一篇:Accord實作錄屏+錄音
