Generische Schnittstellen

Dieses Thema enthält eine Übersicht über generische Schnittstellen, die allgemeine Funktionen über generische Typfamilien bereitstellen.

Generische Schnittstellen

Generische Schnittstellen bieten typsichere Entsprechungen zu nicht generischen Schnittstellen für Sortierungen und Vergleiche sowie für Funktionen, die generischen Auflistungstypen gemein ist.

HinweisHinweis

Ab .NET Framework, Version 4 sind die Typparameter mehrerer generischer Schnittstellen als kovariant oder kontravariant markiert. Dadurch wird die Flexibilität beim Zuweisen und Verwenden von Typen, die diese Schnittstellen implementieren, verbessert.Weitere Informationen finden Sie unter Kovarianz und Kontravarianz in Generika.

Sortierungen und Vergleiche

Im System-Namespace definieren die generische System.IComparable<T>-Schnittstelle und die generische System.IEquatable<T>-Schnittstelle wie ihre nicht generischen Entsprechungen Methoden für Vergleiche in Sortierungen bzw. Vergleiche auf Gleichheit. Typen implementieren diese Schnittstellen, um die Möglichkeit zu bieten, solche Vergleiche auszuführen.

Im System.Collections.Generic-Namespace bieten die generische IComparer<T>-Schnittstelle und die generische IEqualityComparer<T>-Schnittstelle eine Möglichkeit zum Definieren von Sortierungen und Vergleichen für Typen, die die generische System.IComparable<T>-Schnittstelle oder die generische System.IEquatable<T>Schnittstelle nicht implementieren, und sie bieten ebenfalls eine Möglichkeit zum erneuten Definieren dieser Beziehungen für Typen, die diese Schnittstellen implementieren. Diese Schnittstellen werden von Methoden und Konstruktoren vieler generischer Auflistungsklassen verwendet. Beispielsweise können Sie ein generisches IComparer<T>-Objekt an den Konstruktor der SortedDictionary<TKey, TValue>-Klasse übergeben, um eine Sortierreihenfolge für einen Typ anzugeben, der keine generischen System.IComparable<T> implementiert. Für die generische statische Array.Sort-Methode und die List<T>.Sort-Instanzmethode sind Überladungen zum Sortieren von Arrays und Listen mithilfe der generischen IComparer<T>-Implementierungen vorhanden.

Die generische Comparer<T>-Klasse und die generische EqualityComparer<T>-Klasse stellen Basisklassen für Implementierungen der generischen IComparer<T>-Schnittstelle und der generischen IEqualityComparer<T>-Schnittstelle sowie Standardsortierungen und -vergleiche mithilfe der Comparer<T>.Default-Eigenschaft bzw. der EqualityComparer<T>.Default-Eigenschaft bereit.

Auflistungsfunktionalität

Die generische ICollection<T>-Schnittstelle ist die Basisschnittstelle für generische Auflistungstypen. Sie stellt die grundlegenden Funktionen zum Hinzufügen, Entfernen, Kopieren und Auflisten von Elementen bereit. ICollection<T> erbt sowohl von der generischen IEnumerable<T> als auch der nicht generischen IEnumerable.

Die generische IList<T>-Schnittstelle erweitert die generische ICollection<T>-Schnittstelle um Methoden für den indizierten Abruf.

Die generische IDictionary<TKey, TValue>-Schnittstelle erweitert die generische ICollection<T>-Schnittstelle um Methoden für den Abruf anhand von Schlüsseln. Generische Wörterbuchtypen in der .NET Framework-Basisklassenbibliothek implementieren auch die nicht generische IDictionary-Schnittstelle.

Die generische IEnumerable<T>-Schnittstelle stellt eine generische Enumeratorstruktur bereit. Die generische IEnumerator<T>-Schnittstelle, die von generischen Enumeratoren implementiert wird, erbt die nicht generische IEnumerator-Schnittstelle, und der MoveNext-Member und der Reset-Member, die nicht vom T-Typparameter abhängig sind, sind nur für die nicht generische Schnittstelle vorhanden. Dies bedeutet, dass jeder Consumer der nicht generischen Schnittstelle auch die generische Schnittstelle verwenden kann.

Siehe auch

Referenz

System.Collections.Generic

System.Collections.ObjectModel

Konzepte

Generische Auflistungen in .NET Framework

Generische Delegaten zum Bearbeiten von Arrays und Listen

Vorteile und Einschränkungen von Generika

Kovarianz und Kontravarianz in Generika

Weitere Ressourcen

Generika in .NET Framework