foreach.cs

using sys = System;
using sysCols = System.Collections;

public class MainApplication{
  public static void Main(){
    // Costruisco un vettore di stringhe applicando lo Split() ad una stringa
    string s = "gli orizzonti perduti non ritornano mai," +
               "ne abbiamo avute di occasioni perdendole," + 
               "non rimpiangerle mai"; // Franco Battiato - La stagione dell'amore
    string[] parole = s.Split(new char[] {' ', ','}); 

    // Accedo all'array per indice come di consueto
    for(int i=0; i<parole.Length; ++i)
      sys.Console.WriteLine("parole[{0}] = \"{1}\"", i, parole[i]);
      
    // L'array del C# è una collezione e quindi vi accedo col foreach
    foreach(string parola in parole)
      sys.Console.Write("\"{0}\" ", parola);
    sys.Console.WriteLine();

    // Per solo scopo dimostrativo, accedo all'array utilizzando le interfaccie IEnumerable e
    // IEnumerator come fa il foreach
    sysCols.IEnumerator iterator = ((sysCols.IEnumerable)parole).GetEnumerator();
    iterator.Reset(); // Non necessario
    while (iterator.MoveNext())
      sys.Console.Write("'{0}' ", iterator.Current);      
  }
}