int[] arr=new int[10]{1,21,32,43,54,65,76,87,98,10};
foreach(var i in arr)
{
Console.WriteLine("Elements [{0}]:{1}",arr[i],i);
}
我想要类似
的输出element[0]: 1
element[1]: 21
...
element[9]: 10
仅使用foreach
,但出现此错误:
未处理的异常:System.IndexOutOfRangeException:索引为 在数组范围之外。在Exercise1.Main()<0x41e47d70 + 0x0008c>,其中:0 [错误]致命异常: System.IndexOutOfRangeException:索引超出了 数组。在Exercise1.Main()<0x41e47d70 + 0x0008c>在:0
答案 0 :(得分:5)
i
不是索引,而是元素本身。在循环的第二次迭代中,您尝试访问不存在的索引21 Console.WriteLine("Elements [{0}]:{1}",arr[21],21)
更改为for
循环
int[] arr = new int[10] { 1, 21, 32, 43, 54, 65, 76, 87, 98, 10 };
for (int i =0;i< arr.Length;i++)
{
Console.WriteLine("Elements [{0}]:{1}",i ,arr[i]);
}
答案 1 :(得分:1)
尝试这样:
int j =0;
foreach(var i in arr)
{
Console.WriteLine("Elements [{0}]:{1}",j,i);
j++;
}
答案 2 :(得分:0)
foreach
关键字不返回元素的“索引”。它返回元素。
int[] arr = new int[] {1,21,32,43,54,65,76,87,98,10};
foreach (var el in arr)
{
Console.WriteLine("Element {0}", el);
}
在C#中(与go不同),没有直接构造返回i
索引以及元素arr[i]
。您可以拥有一个(i
使用for
周期,然后从那里获得arr[i]
)或另一个(使用foreach
)
使用string
数组比较您写的内容以查看其不合逻辑:
string[] arr = new string[] {"1","21","32","43","54","65","76","87","98","10"};
foreach (var el in arr)
{
Console.WriteLine("Element {0}", el);
}