Die .NET CLR - Version 2.0

Fast Templates: Generics

Mit den Generics in der .NET-Laufzeit wird die Arbeit deutlich angenehmer. Zusätzlich gibt es auch noch eine neue Sammlung an Collection-Klassen in der Base Class Library. Die befinden sich im Namespace System.Collections.Generic. Dort findet sich auch eine allgemeine Listenklassen: List<T>.

Der Trick ist nun der, dass man für den Parameter "T" einen beliebigen konkreten Typ einsetzen kann, und dadurch bei der Instanziierung eine typensichere Listenklasse erhält. Angenommen man hat eine Klasse Person und benötigt eine Liste von Personen: Mit Hilfe von Generics und der List<T>-Klasse kann man dann folgendes programmieren:

List<Person> personen;

Die Klasse Person wird später nochmals gebraucht und hat folgenden Aufbau:

public class Person {
private string name;
public string Name {
get {
return name;
}
}
private string vorname;
public string Vorname {
get {
return vorname;
}
}
public Person( string name, string vorname) {
this.name = name;
this.vorname = vorname;
}
}

Die Instanz personen lässt sich nun mit Objekten vom Typ Person füttern. Eine Iteration über diese Liste aus "Person"-Objekten liefert jeweils ein "Person"-Objekt zurück.

Das unterscheidet sich sehr deutlich von der "ArrayList"-Klasse, mit der man zur Zeit noch vorlieb nehmen muss: Dort werden alle Objekte immer als Typ "Object" gespeichert und auch so zurückgeliefert - ganz gleich, welchen konkreten Objekte man in der Liste unterbringt.