在这种情况下j出现在哪里?

时间:2016-03-20 18:11:49

标签: c#

以下是教程中的程序代码:

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 以及它出现在哪里?

5 个答案:

答案 0 :(得分:1)

j是数组n内的元素。在这里参考foreach解释:How do foreach loops work in C#?

答案 1 :(得分:1)

你在for循环中

因此j的每个值都会被打印出来,并且你将作为参数给出的字符串格式为wich变量必须映射到。

enter image description here

答案 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的每个整数,在数组中执行某些操作。