日期:2014-05-19  浏览次数:20892 次

数组遍历的一个小问题
使用foreach语句遍历数组时     怎么会提示下标越界呢     不懂     望高手指点

下  

using   System;
using   System.Collections.Generic;
public   class   MyClass{
              public   static   void   Main()
{int[]   arr1=new   int[4]{1,2,3,5};
int   total=0;
try{
    foreach(int   num   in   arr1){  
    Console.WriteLine(arr1[num]);    
}
}
catch(IndexOutOfRangeException   e1){
Console.WriteLine( "IndexOutOfExcepetion ");
for(int   num=0;num <=arr1.Length-1;num++){  
    total+=arr1[num];    
}
}

Console.WriteLine(total);

Console.ReadLine();
}

}

------解决方案--------------------
num得到的数组中的值,不是指数

foreach(int num in arr1)
{
total+=num;
Console.WriteLine(num);
}
------解决方案--------------------
foreach(int num in arr1)
{
Console.WriteLine(arr1[num]);
^^^^^^^^^^^^^
}
这里的num依次为1,2,3,5,当执行到5的时候,组数就越界了...
foreach中,得到的是值,而不是索引..
------解决方案--------------------
改成
try
{
foreach (int num in arr1)
{
Console.WriteLine(num);
}
}
------解决方案--------------------
Console.WriteLine(arr1[num]); 这里错了
改成

Console.WriteLine(num.ToString);