C#foreach的疑问

测试NULL 2008-04-03 09:50:21
为啥将
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};就不会产生数组越界异常了呢?
...全文
162 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
测试NULL 2008-04-19
  • 打赏
  • 举报
回复
多谢了!!!!!!!!!
DshirenJ 2008-04-05
  • 打赏
  • 举报
回复
foreach(int i in arry)
{
Console.Write(i + "\n");
}
Q_282898034 2008-04-05
  • 打赏
  • 举报
回复
楼主是从VB转过来的吧,我当初从BASIC转C也很不习惯,现在觉得还是从0开始索引好。
Intelement 2008-04-04
  • 打赏
  • 举报
回复

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"); //这下子可就不能再张冠李戴了吧
}
}
}
}

gt2008good 2008-04-04
  • 打赏
  • 举报
回复
haowan
wahsy2 2008-04-04
  • 打赏
  • 举报
回复
直接
foreach(int i in arry)
{
Console.Write(i + "\n");
}
不就好了..干嘛要arry[i];
自寻烦恼嘛....i是arry里的数据啊
lyl1988 2008-04-04
  • 打赏
  • 举报
回复
这里i是arry里面的元素,最大值为9,而arry的索引是0~8,
自然就越界了
kangnan008 2008-04-04
  • 打赏
  • 举报
回复
int []arry = new int[]{0,1,2,3,4,5,6,7,8,9}
里面的10个元素全部输出。。没有异常~
conannb 2008-04-03
  • 打赏
  • 举报
回复
元素全部列出 是10个数字
huanguomin 2008-04-03
  • 打赏
  • 举报
回复
同意wanghui0380的回答。
sswwee 2008-04-03
  • 打赏
  • 举报
回复
arry共9个元素。所以索引是arry[0]-arry[8]范围。9就越界了。
这样你就理解了

int[] arr=new arr[]{66,500,2222};
foreach(int i in arr)
{
Console.write(arr[i]+"\n");
}

上来就越界了,因为第一次i就是66,那么arr[66]肯定是没有的。
wanghui0380 2008-04-03
  • 打赏
  • 举报
回复
因为,arry是的索引是从0开始算的

arry[9]实际取的是第十个数,自然越界了

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧