Un esempio molto semplice è la classe generica List<T>
. Può contenere un numero di oggetti di qualsiasi tipo. Ad esempio, è possibile dichiarare un elenco di stringhe (new List<string>()
) o un elenco di Animali (new List<Animal>()
), perché è generico.
E se non potessi usare i farmaci generici? È possibile utilizzare la classe ArrayList
, ma il lato negativo è che il tipo di contenuto è un object
. Quindi, quando esegui un'iterazione sull'elenco, devi inserire ogni elemento nel suo tipo corretto (string
o Animal
) che è più codice e presenta una penalizzazione delle prestazioni. Inoltre, poiché un oggetto ArrayList
contiene oggetti, non è sicuro dal tipo. Si potrebbe ancora aggiungere un Animal
a un ArrayList
di stringhe:
ArrayList arrayList = new ArrayList();
arrayList.Add(new Animal());
arrayList.Add("");
Così, quando l'iterazione un ArrayList che avrebbe dovuto controllare il tipo per assicurarsi che l'istanza è di un tipo specifico, che si traduce in codice poveri:
foreach (object o in arrayList)
{
if(o is Animal)
((Animal)o).Speak();
}
con un generico List<string>
, questo non è semplicemente possibile:
List<string> stringList = new List<String>();
stringList.Add("Hello");
stringList.Add("Second String");
stringList.Add(new Animal()); // error! Animal cannot be cast to a string
Sede [questa domanda] (http://stackoverflow.com/questions/77632/what-is-cool-about -generics-perché-uso-li). –
Vedere: http://www.csharp-station.com/Tutorials/Lesson20.aspx – kenorb