Generische Schnittstellen in .NET

Dieser Artikel bietet einen Überblick über generische Schnittstellen von .NET, die allgemeine Funktionen für Familien generischer Typen bereitstellen.

Generische Schnittstellen bieten typsichere Entsprechungen zu nicht generischen Schnittstellen für Reihenfolgen- und Übereinstimmungsvergleiche sowie für Funktionen, die von generischen Auflistungstypen gemeinsam verwendet werden. In .NET 7 werden generische Schnittstellen für zahlenähnliche Typen eingeführt, z. B. System.Numerics.INumber<TSelf>. Mit diesen Schnittstellen können Sie generische Methoden definieren, die mathematische Funktionalität bereitstellen, wobei der Parameter des generischen Typs zwingend ein Typ sein muss, der eine generische numerische Schnittstelle implementiert.

Hinweis

Die Typparameter mehrerer generischer Schnittstellen sind als kovariant oder kontravariant gekennzeichnet. Dies bietet mehr Flexibilität beim Zuweisen und Verwenden von Typen, die diese Schnittstellen implementieren. Weitere Informationen finden Sie unter Kovarianz und Kontravarianz.

Übereinstimmungs- und Reihenfolgenvergleiche

Auflistungsfunktionalität

  • Die generische ICollection<T>-Schnittstelle ist die Basisschnittstelle für generische Auflistungstypen. Sie stellt grundlegende Funktionen zum Hinzufügen, Entfernen, Kopieren und Auflisten von Elementen bereit. ICollection<T> erbt sowohl von der generischen IEnumerable<T> als auch von 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-Basisklassenbibliothek implementieren auch die nicht generische Schnittstelle IDictionary.

  • 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. Die Member MoveNext und Reset, 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.

Mathematische Funktionalität

In .NET 7 werden generische Schnittstellen im Namespace System.Numerics eingeführt, die zahlenähnliche Typen und die für sie verfügbare Funktionalität beschreiben. Die 20 numerischen Typen, die die .NET-Basisklassenbibliothek bereitstellt, z. B Int32 und Double, wurden so aktualisiert, dass diese Schnittstellen implementiert werden. Die prominenteste dieser Schnittstellen ist INumber<TSelf>, was in etwa einer „reellen“ Zahl entspricht.

Weitere Informationen zu diesen Schnittstellen finden Sie unter Generische Mathematik.

Siehe auch