【发布时间】:2013-08-19 07:40:46
【问题描述】:
如果我使用foreach 循环将值随机分配给数组,它会分配全0。但是,如果将其更改为普通的for 循环,它就可以正常工作。如下所示
Random random = new Random();
int[] a = new int[10];
for (int i = 0; i < 10; i++)
{
a[i] = random.Next(0, 10);
}
foreach (var item in a)
Console.WriteLine(item);
输出很好,值是随机的
5
8
...
但是,如果我使用 foreach 循环来分配随机值,则第一个数组项具有随机值,其余的总是 0.... 为什么会这样?
foreach (var item in a)
{
a[item] = random.Next(0, 10);
}
foreach (var item in a)
Console.WriteLine(item);
这会产生
8
0
0
0... all zeros follow
为什么普通的 for 循环可以正常工作,而 foreach 循环却不行?相同的 foreach 循环可以很好地打印值吗?
谢谢
【问题讨论】:
-
是的,我复制粘贴了....
-
我个人认为 Eric Lippert 的帖子从来都不容易阅读。内容丰富……是的……容易理解……不! :(
标签: c#