Heim > Backend-Entwicklung > C++ > Warum implementiert die C#-Klasse „System.Array' die Schnittstelle „IList'?

Warum implementiert die C#-Klasse „System.Array' die Schnittstelle „IList'?

Susan Sarandon
Freigeben: 2024-12-28 06:29:09
Original
138 Leute haben es durchsucht

Why Does the C# `System.Array` Class Implement the `IList` Interface?

Eintauchen in die Array-Implementierung von IList: Die Begründung verstehen

Die System.Array-Klasse in C# weist eine einzigartige Eigenschaft auf: Sie implementiert die IList Schnittstelle. Während dieses Konzept auf den ersten Blick einfach erscheinen mag, könnte die Praktikabilität des Aufrufs von IList-Methoden für ein Array Fragen aufwerfen. Ziel dieses Artikels ist es, den zugrunde liegenden Grund für diese Implementierung anzusprechen, anstatt sich auf die Ausnahme zu konzentrieren, die beim Aufruf bestimmter Methoden auftritt.

Enthüllung der Begründung

Die Antwort auf die Frage, warum Array-Implementierungen IList liegt in den inhärenten Fähigkeiten eines Arrays. Ein Array bietet einen bemerkenswert schnellen Zugriff durch Indizierung, eine Funktion, die andere Sammlungsschnittstellen nicht bieten. Folglich ist IList/IList zeichnen sich als einzige Sammlungsschnittstellen aus, die diese Funktionalität unterstützen. Daher dient die Implementierung von IList in Array einem pragmatischen Zweck.

Interface-Design in Frage stellen

Das Fehlen einer Schnittstelle, die speziell auf konstante Sammlungen mit Indexern zugeschnitten ist, führt zu weiteren Untersuchungen. Leider kann zum jetzigen Zeitpunkt keine definitive Antwort gegeben werden. Darüber hinaus ist das Fehlen von schreibgeschützten Schnittstellen für Sammlungen ebenfalls ein bemerkenswertes Versäumnis, das berücksichtigt werden muss.

Neubewertung des Schnittstellendesigns

Im Idealfall eine umfassende Suite von Es würden (generische) Sammlungsschnittstellen existieren, die jeweils auf bestimmte Sammlungsfunktionen zugeschnitten sind. Auch die Nomenklatur sollte überarbeitet werden, da die Verwendung des Begriffs „Liste“ für eine indexierte Sammlung kontraintuitiv erscheint. Eine mögliche alternative Hierarchie könnte Folgendes umfassen:

  • Nur ​​Aufzählung: IEnumerable
  • Schreibgeschützt ohne Indexer: IReadOnlyCollection
  • Skalierbar mit Nr Indexer: ICollection
  • Schreibgeschützt mit Indexer: IReadOnlyList
  • Konstante Größe mit Indexer: IReadOnlyIndexedList
  • Variablengröße mit Indexer: IList

Adressierung von Schnittstelleneinschränkungen

While Da die aktuellen Sammelschnittstellen möglicherweise nicht optimal sind, folgen sie dem Substitutionsprinzip durch Deklaration der gültigen Methoden durch Eigenschaften, wodurch die Integrität der Schnittstellen gewahrt bleibt.

Das obige ist der detaillierte Inhalt vonWarum implementiert die C#-Klasse „System.Array' die Schnittstelle „IList'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage