以下是教程中的程序代码:
using System;
namespace ArrayApplication
{
class MyArray
{
static void Main(string[] args)
{
int [] n = new int[10]; /* n is an array of 10 integers */
/* initialize elements of array n */
for ( int i = 0; i < 10; i++ )
{
n[i] = i + 100;
}
/* output each array element's value */
foreach (int j in n )
{
int i = j-100;
Console.WriteLine("Element[{0}] = {1}", i, j);
i++;
}
Console.ReadKey();
}
}
}
请告诉处理器什么是 j 以及它出现在哪里?
答案 0 :(得分:1)
j
是数组n
内的元素。在这里参考foreach解释:How do foreach loops work in C#?
答案 1 :(得分:1)
答案 2 :(得分:0)
foreach语句用于遍历集合以获取所需的信息,但不能用于在源集合中添加或删除项目以避免不可预测的副作用。
元素j
被迭代为集合n中的项。 由于n是整数数组,因此j的类型为int。
假设:n = [1,2,3,4,5]
然后在foreach (int j in n)
内,j是每次迭代中的元素,如第一次迭代中的1,第二次迭代中的2,继续直到最后一个元素。因此,j包含每次迭代中的数组元素,而不是索引,而是每一步中连续索引的值
像foreach(int i in obj)
{...}这样的foreach循环执行如下:
var tmp = obj.GetEnumerator();
int i; // up to C# 4.0
while(tmp.MoveNext()) {
int i; // C# 5.0
i = tmp.Current;
{...} // your code
}
但是如果您需要在源集合中添加或删除项目,请使用for循环。
答案 3 :(得分:0)
你只是对foreach的作用感到困惑。
foreach (int j in n )
{
int i = j - 100;
Console.WriteLine("Element[{0}] = {1}", i, j);
i++;
}
等于,
for (int index = 0; index < n.Length; index++) {
int j = n[index]; // <---- THIS IS YOUR `j`
int i = j - 100;
Console.WriteLine("Element[{0}] = {1}", i, j);
i++;
}
答案 4 :(得分:0)
我将尝试用现实世界的例子来解释它:
想象一下,我们有一个满是人的餐厅,我们想给每个人一个巧克力吧,我们可以把它想象成:
对于餐厅中的每个人{给巧克力棒}
如果我们将这个概念更接近代码,我们可以说:
foreach(餐馆里的人){给巧克力棒}
现在让这个陈述有意义,我们需要知道我们在谈论哪家餐馆!
所以,让我们给我们的餐厅命名:TehPizzaPalace
结果是:
foreach(TehPizzaPalace中的人物){给巧克力棒}
基本上,餐馆是一群人,而Person只是说明我们期望从TehPizzaPalace中提取的对象类型。
如果我们不知道餐厅是人的集合,我们可以改为使用
foreach(TehPizzaPalace中的var p){给巧克力棒}
在声明中:foreach(int j in n){做某事} 对于我们将命名为j的每个整数,在数组中执行某些操作。