Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 22702|Antwort: 0

[Quelle] Es gibt verschiedene Arten von Rollups für Sammlungen in C#

[Link kopieren]
Veröffentlicht am 11.11.2014 08:44:59 | | |
Eine Sammlung, die eine Menge von Objekten darstellt, die durch Durchlaufen jedes Elements zugänglich sind (insbesondere kann sie mit foreach-Schleife erreicht werden)
Eine Sammlung enthält mehrere Elemente, d. h. es gibt ein Sammlungsklassenobjekt und N Elementobjekte

Da jede Collection-Klasse die IEnumerable-Schnittstelle implementiert, besitzt jedes Collection-Class-Objekt eine GetEnumerator()-Methode, die ein Objekt zurückgeben kann, das die IEnumerator-Schnittstelle implementiert, die weder ein Collection-Class-Objekt noch ein Collection-Element-Klassenobjekt ist, sondern ein unabhängiges Klassenobjekt. Dieses Objekt erlaubt es, jedes Elementobjekt im Collection-Class-Objekt zu iterieren

Handelt es sich um eine benutzerdefinierte Collection-Klasse, muss der Benutzer seine GetEnumerator()-Methode implementieren, andernfalls können keine Schleifen verwendet werden. Natürlich muss auch die IEnumerator-Klasse, die dieser benutzerdefinierten Collection-Klasse entspricht (die Klasse, die die Schnittstelle implementiert), angepasst werden

Zum Beispiel ist der IEnumerator, der der ArrayList-Sammelklasse entspricht, ArrayListEnumeratorSimple
            Der IEnumerator, der der Array-Sammlungsklasse entspricht, ist SZArrayEnumerator
      (Keine der beiden Klassen ist in der .NET Framework Class Library Dokumentation (MSDN) behandelt.)

1. Die Schnittstellen in System. Kolloktionen, die das Verhalten der Sammlung repräsentieren, sind:
1) ICollection
Definieren Sie die Größe, Anzahl der Enume und Synchronisationsmethoden für alle Sammlungen. Abgeleitet von IEnumerable
Es definiert das grundlegendste Verhalten der Collection-Klasse, und alle Collection-Klassen implementieren diese Schnittstelle (Basis-Interface)
Aber sein Verhalten ist zu einfach: Es handelt sich hauptsächlich um eine Count-Eigenschaft, und es macht wenig Sinn, sie allein zu implementieren

2) IEnumerable
Stellen Sie eine Aufzählung frei, die einfache Iterationen auf einer Menge unterstützt
Es gibt nur eine Methode, GetEnumerator(), die eine IEnumerator-Schnittstelle zurückgibt, über die sie die Sammlung durchlaufen kann
Im Grunde implementieren alle Collection-Klassen diese Schnittstelle

3) IList
Die IList-Implementierung ist eine Sammlung von Werten, die sortierbar sind und nach Index für ihre Mitglieder zugänglich sind; sie implementiert selbst die ICollection- und IEnumerable-Schnittstellen
ist die abstrakte Basisklasse für alle Listen. Es gibt drei Kategorien von IList-Implementierungen: schreibgeschützt, feste Größe und variable Größe.

4) IDictionary
Die IDictionary-Implementierung ist eine Sammlung von Schlüssel-/Wertpaaren, die selbst die ICollection- und IEnumerable-Schnittstellen implementiert
ist die Basisschnittstelle einer Sammlung von Schlüssel-/Wertpaaren. Es gibt drei Kategorien von IDictionary-Implementierungen: Nur-lese-, Festgröße- und Variable-Größen-Implementierungen.
IDictionary kann als Wörterbuch, Abbildung oder Shash-Liste bezeichnet werden und greift auf Werte basierend auf Schlüsseln (beliebiger Art) zu.

2. Die Collection-Klassen, die direkt in System.Collections verwendet werden können, sind:
1) ArrayList
Implementiere Schnittstellen: IList, ICollection, IEnumerable
Solange die Sammlung nicht verändert wird, kann ArrayList sicher mehrere Leser gleichzeitig unterstützen
Wenn Elemente zur ArrayList hinzugefügt werden, wird die Kapazität automatisch bei Bedarf durch Umverteilung erhöht (2-fache Erhöhung)
Wenn du ein Array von Objekten erstellen musst, aber die Größe des Arrays vorher nicht kennst, kannst du ArrayList verwenden
ArrayList bezeichnet alle Elemente als Objekte, daher muss sie beim Zugriff auf Elemente in ArrayList typisiert werden
Vorteile: Dynamische Änderung der Größe, flexibles und bequemes Einfügen und Entfernen von Elementen, Sortierbarkeit
Nachteile: Die Einsetzleistung ist nicht so gut wie bei Arrays, nicht bei starken Typen

2) BitArray
Schnittstellen implementieren: ICollection und IEnumerable
Verwalten Sie komprimierte Arrays von Bitwerten.

3) Hashtabelle
Schnittstellen implementieren: IDictionary, ICollection, IEnumerable
Man kann Elemente frei zur Hashtable hinzufügen oder entfernen, einige wie ArrayList, aber ohne den Performance-Overhead

4) SortedList
Schnittstellen implementieren: IDictionary, ICollection, IEnumerable
SortedLIst vereint die Vorteile von ArrayList und Hashtable und kann nach Schlüsselwert sortiert werden

5) Warteschlange
Schnittstellen implementieren: ICollection und IEnumerable
Queques sind Warteschlangen, First-in, First-Out-Zugang zu einzelnen Elementen
Sie können die GetEnumerator()-Methode des Queque-Objekts aufrufen, um das IEnumerator-Objekt durch die Elemente in der Warteschlange zu bringen

6) Stapel
Schnittstellen implementieren: ICollection und IEnumerable
Ein Stack ist ein Stack, der einzelne Elemente auf der Last-in-First-Out-Basis zugreift
Du kannst die GetEnumerator()-Methode des Stack-Objekts aufrufen, damit das IEnumerator-Objekt durch die Elemente im Stack iteriert

3. Die oben genannten Sammlungsklassen sind alle allgemeine Sammlungsklassen, und die meisten Elemente, die sie akzeptieren, gehören zum Objekt-Typ, wenn das Objekt eingefügt wird
Nach der Sammlung geht die ursprüngliche Typinformation verloren – das heißt, diese allgemeinen Sammlungsklassen sind nicht stark typisiert
Der Workaround besteht darin, stark typisierte Collection-Klassen zu verwenden
System.Collections-Namensraum
System.Collections.Spezialisierter Namensraum Einige Klassen können die Anforderungen erfüllen und direkt oder vererbt verwendet werden





Vorhergehend:Ein offener Brief an die Mehrheit der Schwänze am Vorabend des Singles' Day
Nächster:C# Generischer Range Rover (Kurve)
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com