为啥将
using System;
namespace A
{
class MainClass
{
public static void Main(string[] args)
{
int []arry = new int[]{1,2,3,4,5,6,7,8,9};//???
foreach(int i in arry)
{
Console.Write(arry [i] + "\n");
}
}
}
}
中的//???所在的那行该为:int []arry = new int[]{0,1,2,3,4,5,6,7,8,9};就不会产生数组越界异常了呢?
using System;
namespace A
{
class MainClass
{
public static void Main(string[] args)
{
int []arry = new int[]{1,2,3,4,5,6,7,8,9};//???
foreach(int i in arry)
{
Console.Write(arry [i] + "\n");
}
}
}
}
中的//???所在的那行该为:int []arry = new int[]{0,1,2,3,4,5,6,7,8,9};就不会产生数组越界异常了呢?
这样你就理解了int[] arr=new arr[]{66,500,2222};
foreach(int i in arr)
{
Console.write(arr[i]+"\n");
}上来就越界了,因为第一次i就是66,那么arr[66]肯定是没有的。
里面的10个元素全部输出。。没有异常~
自然就越界了
foreach(int i in arry)
{
Console.Write(i + "\n");
}
不就好了..干嘛要arry[i];
自寻烦恼嘛....i是arry里的数据啊
using System;
namespace A
{
class MainClass
{
public static void Main(string[] args)
{
int []arry = new int[]{1,2,3,4,5,6,7,8,9};
foreach(int i in arry)
{
Console.Write(arry [i] + "\n");//输出时为什么不直接使用 i 而使用 arry[i] 呢?这里的i是数组元素不是索引!
}
}
}
} int i in arry 表示对数组 arry 进行列举
i 在这里代表的是列举的数组元素(1,2,3,4,5,6,7,8,9}的任意一个
它并不代表数组的索引
数组元素和数组索引所代表的意义完全不一样
不能将数组元素带入到数组索引中使用
如 arry[i] 是不正确的
这里出现这个“有意思”的结果是因为数组元素和数组索引正好都是整型 int如果是下面这种情况呢?using System;
namespace A
{
class MainClass
{
public static void Main(string[] args)
{
string[] arry = new string[]{"1","2","3","4","5","6","7","8","9"};
foreach(string i in arry)
{
Console.Write(arry [i] + "\n"); //这下子可就不能再张冠李戴了吧
}
}
}
}
{
Console.Write(i + "\n");
}