2017-10-09 134 views
-2

什麼是每個循環下面的C#代碼循環?堅持顯示指數頭寸。感謝您的幫助,將不勝感激。每個循環的數組索引C#

int[] n=new int[5]; 
     n[0] = 12; 
     n[1] = 24; 
     n[2] = 36; 
     n[3] = 48; 
     n[4] = 60; 

     //n[5]=2; // will display out of bounds error 
     for (int i = 0; i < n.Length; i++) 
     { 
      Console.WriteLine("Aray position "+ i.ToString() + " & the value is " + n[i].ToString()); 
     } 

我試過了。有什麼更好的嗎?而不是猜測我想直接看到索引的索引。

   int a = 0; 
     foreach (int i in n) 
     { 

      Console.WriteLine("Aray position " + a + " & the value is " + i); 
      a++; 

     } 
+1

的foreach沒有索引,你可以讓自己的'i'並加 – EpicKip

+1

如果_need_指數則'for'已經是要走的路 - 沒有什麼可以從'foreach'這裏獲得 –

+0

int a = 0; foreach(int i in n) { Console.WriteLine(「Aray position」+ a +「&value is」+ i); a ++; } 我做了上面的代碼,但想要一些方法來保持「a」內。所以「a」的範圍會變小。謝謝反正 – zibon

回答

1

foreach循環取決於內容,和你的情況,如果需要當前索引,最好的選擇是使用for循環。

explansion:foreach使用循環Enumerable和它的Enumerator。在EnumeratorCurrent財產和MoveNext()方法。因此,index不屬於...

3

您可以使用Select -linq方法的覆蓋來獲得itemindex

var list = n.Select((value, index) => new { value, index }); 

foreach (var item in list) 
{ 
    Console.WriteLine("Aray position " + item.index + " & the value is " + item.value); 
} 

但是正如你所看到的,這種方法並不短。

0
 foreach (int i in n) 
     {Console.WriteLine("Aray position " + Array.IndexOf(n,i) + " & the value is " + i); 
     } 

感謝這工作。

+0

只有'n'只包含不同的值時,這纔會起作用 –

0

這裏是一個短版

int[] n = { 12, 24, 36, 48, 60 }; 

foreach (var item in n.Select((x, i) => new { x, i })) 
{ 
    Console.WriteLine("Aray position {0} & the value is {1}" , item.i, item.x); 
}