using sys = System;
using sysCols = System.Collections;
using sysSCols = System.Collections.Specialized;
public class MainApplication{
public static void Main(){
// Costruisco un vettore di stringhe con cui popolare le collezioni
string battiato = "tesserò i tuoi capelli come trame di un canto," +
"conosco le leggi del mondo e te ne farò dono," +
"supererò le correnti gravitazionali " +
"lo spazio e la luce per non farti invecchiare," +
"ti salverò da ogni malinconia perchè sei un essere speciale " +
"ed io avrò cura di te"; // Franco Battiato - La cura
string[] parole = battiato.Split(new char[] {' ', ','});
// Istanzio un ArrayList che è una collezione generica debolmente tipizzata
// e la popolo con elementi di tipo String.
sysCols.ArrayList myArrayList = new sysCols.ArrayList(parole);
// La seguente linea di codice aggiunge un elemento di tipo Char[] alla
// collezione. Scommentandola, la compilazione andrà a buon fine. Solo
// durante l'esecuzione il successivo foreach andrà in errore iterando
// sull'elemento di tipo inatteso.
//myArrayList.Add(new char[] {'x' , 'y'});
// Itero e stampo gli elementi di myArrayString che mi aspetto essere di tipo String,
// se la collezione contiene elementi di tipo diverso da string avverrà un errore
// Run-Time.
foreach(string parola in myArrayList)
sys.Console.Write("\"{0}\" ", parola);
sys.Console.WriteLine();
// Istanzio una StringCollection che è una collezione specifica per elementi di tipo string
// cioè fortemente tipizzata e la popolo.
sysSCols.StringCollection myStringCollection = new sysSCols.StringCollection();
myStringCollection.AddRange(parole);
// La seguente linea di codice aggiunge un elemento di tipo Char[] alla
// collezione. Scommentandola si ottiene un errore di compilazione che mi
// avvisa della violazione del tipo!
//myStringCollections.Add(new char[] {'x' , 'y'});
// Itero e stampo gli elementi di myStringCollection che necessariamente è di tipo String
// in quanto la collezione è fortemente tipizzata
foreach(string parola in myStringCollection)
sys.Console.Write("'{0}' ", parola);
sys.Console.WriteLine();
}
}