Was sind generische Objekte in C#?

Februar 15, 2025

Generics sind eine mächtige Programmiertechnik in C#.NET, die es ermöglicht, wiederverwendbaren Code für verschiedene Datentypen zu schreiben, ohne die Logik für jeden Typ neu schreiben zu müssen. Generics funktionieren mit Typparametern, die durch Großbuchstaben in spitzen Klammern <> dargestellt werden, z. B. List<T>, Dictionary<TKey, TValue>. Dabei stehen T, TKey und TValue für die konkreten Datentypen, die bei der Instanziierung des Objekts verwendet werden.

Eine der häufigsten Anwendungen von Generics ist die Erstellung von Collections (Sammlungen) wie List<T>. Vor Generics musste man für eine Liste von Student-Objekten ArrayList verwenden und jedes Element beim Abrufen typisieren. Dies birgt das Risiko von Laufzeitfehlern bei falscher Typisierung.

// Ohne Generics
ArrayList students = new ArrayList();
students.Add(new Student());
students.Add(new Car()); // Kein Fehler zur Kompilierzeit

Student first = (Student)students[0]; // Typisierung erforderlich, kann Laufzeitfehler verursachen

Mit Generics löst List<T> dieses Problem, indem es nur das Hinzufügen von Objekten des Typs T zur Liste erlaubt. Der Compiler erkennt Fehler bereits zur Kompilierzeit, wenn versucht wird, ein Objekt mit falschem Typ hinzuzufügen.

// Mit Generics
List<Student> students = new List<Student>();
students.Add(new Student()); 
students.Add(new Car()); // Kompilierzeitfehler

Student first = students[0]; // Keine Typisierung erforderlich

Die Verwendung von Generics bietet viele Vorteile:

  • Code-Wiederverwendbarkeit: Einmal schreiben für viele Datentypen. Z. B. kann die Klasse List<T> für List<int>, List<string>, List<Student> usw. verwendet werden.
  • Typsicherheit: Der Compiler prüft Datentypen zur Kompilierzeit und reduziert Laufzeitfehler.
  • Performance: Vermeidung von Boxing/Unboxing bei der Arbeit mit Werttypen, was die Leistung verbessert.
  • Lesbarkeit und Wartbarkeit: Klarerer, verständlicherer und wartungsfreundlicherer Code.

Generics werden nicht nur in Collections verwendet, sondern auch bei der Definition von Methoden (generische Methoden) und Klassen (generische Klassen). Beispielsweise kann eine Methode Swap<T> die Werte zweier Variablen beliebigen Typs vertauschen.

public static void Swap<T>(ref T a, ref T b)
{
    T temp = a;
    a = b;
    b = temp;
}


int x = 10;
int y = 20;
Swap<int>(ref x, ref y); // Vertauschen zweier Integer

string str1 = "Hello";
string str2 = "World";
Swap<string>(ref str1, ref str2); // Vertauschen zweier Strings

Zusammenfassend lässt sich sagen, dass Generics ein wichtiges Feature in C#.NET sind, das hilft, flexibleren, sichereren und effizienteren Code zu schreiben. Sie sind die Grundlage für viele andere Technologien wie LINQ und spielen eine Schlüsselrolle bei der Entwicklung moderner Anwendungen. Ein gutes Verständnis von generischen Objekten und ihrer Verwendung hilft Entwicklern, die Codequalität zu verbessern und die Anwendungsleistung zu optimieren.

Leave A Comment

Kategorien

Recent Posts

Create your account