Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieser Artikel bietet einen Überblick über die generischen Schnittstellen von .NET, die allgemeine Funktionen für Familien generischer Typen bereitstellen.
Generische Schnittstellen bieten typsichere Gegenstücke zu nichtgenerischen Schnittstellen für Sortierungs- und Gleichheitsvergleiche sowie für Funktionen, die von generischen Sammlungstypen gemeinsam verwendet werden. .NET 7 führt generische Schnittstellen für zahlenähnliche Typen ein, z. B. System.Numerics.INumber<TSelf>. Mit diesen Schnittstellen können Sie generische Methoden definieren, die mathematische Funktionen bereitstellen, wobei der generische Typparameter auf einen Typ beschränkt ist, der eine generische, numerische Schnittstelle implementiert.
Hinweis
Die Typparameter mehrerer generischer Schnittstellen sind als kovariant oder kontravariant gekennzeichnet und bieten eine größere Flexibilität beim Zuweisen und Verwenden von Typen, die diese Schnittstellen implementieren. Weitere Informationen finden Sie unter "Kovarianz" und "Contravariance".
Gleichheits- und Sortierungsvergleiche
Im System-Namespace definieren die generischen Schnittstellen System.IComparable<T> und System.IEquatable<T> wie ihre nichtgenerischen Gegenstücke Methoden für Reihenfolgevergleiche bzw. Gleichheitsvergleiche. Typen implementieren diese Schnittstellen, um die Möglichkeit zu bieten, solche Vergleiche durchzuführen.
Im System.Collections.Generic-Namespace bieten die generischen Schnittstellen IComparer<T> und IEqualityComparer<T> eine Möglichkeit, eine Sortierung oder einen Gleichheitsvergleich für Typen zu definieren, die weder die Schnittstelle System.IComparable<T> noch System.IEquatable<T> implementieren. Sie bieten auch eine Möglichkeit, diese Beziehungen für Typen neu zu definieren, die dies tun.
Diese Schnittstellen werden von Methoden und Konstruktoren vieler generischer Auflistungsklassen verwendet. Sie können z. B. ein generisches IComparer<T> Objekt an den Konstruktor der SortedDictionary<TKey,TValue> Klasse übergeben, um eine Sortierreihenfolge für einen Typ anzugeben, der kein generisches System.IComparable<T>Objekt implementiert. Es gibt Überladungen der Array.Sort generischen statischen Methode und der List<T>.Sort Instanzmethode zur Sortierung von Arrays und Listen mit generischen IComparer<T> Implementierungen.
Die generischen Klassen Comparer<T> und EqualityComparer<T> stellen Basisklassen für Implementierungen der generischen Schnittstellen IComparer<T> und IEqualityComparer<T> bereit und bieten außerdem durch ihre jeweiligen Eigenschaften Comparer<T>.Default und EqualityComparer<T>.Default Standardreihenfolgen- und Gleichheitsvergleiche.
Sammlungsfunktionalität
Die ICollection<T> generische Schnittstelle ist die grundlegende Schnittstelle für generische Sammlungstypen. Es bietet grundlegende Funktionen zum Hinzufügen, Entfernen, Kopieren und Aufzählen von Elementen. ICollection<T> erbt von generischen IEnumerable<T> und nichtgenerischen IEnumerable.
Die IList<T> generische Schnittstelle erweitert die ICollection<T> generische Schnittstelle mit Methoden für den indizierten Abruf.
Die IDictionary<TKey,TValue> generische Schnittstelle erweitert die ICollection<T> generische Schnittstelle um Methoden für den schlüsselbasierten Zugriff. Generische Wörterbuchtypen in der .NET-Basisklassenbibliothek implementieren auch die nichtgenerische IDictionary Schnittstelle.
Die IEnumerable<T> generische Schnittstelle stellt eine generische Enumerationsstruktur bereit. Die IEnumerator<T> generische Schnittstelle, die von generischen Enumeratoren implementiert wird, erbt die nichtgenerische IEnumerator Schnittstelle; die MoveNext und Reset Mitglieder, die nicht vom Typparameter
T
abhängen, erscheinen nur in der nichtgenerischen Schnittstelle. Dies bedeutet, dass jeder Verbraucher der nichtgenerischen Schnittstelle auch die generische Schnittstelle nutzen kann.
Mathematische Funktionalität
.NET 7 führt generische Schnittstellen in den System.Numerics Namespace ein, die nummernähnliche Typen und die ihnen zur Verfügung stehenden Funktionen beschreiben. Die 20 numerischen Typen, die die .NET-Basisklassenbibliothek bereitstellt, wie beispielsweise Int32 und Double, wurden aktualisiert, um diese Schnittstellen zu implementieren. Die auffälligste dieser Schnittstellen ist INumber<TSelf>, was ungefähr einer "realen" Zahl entspricht.
Weitere Informationen zu diesen Schnittstellen finden Sie unter Generische Mathematik.