Wie und wo Enumeratoren verwendet werden
Ein Enumerator ist ein Objekt, das die Möglichkeit bietet, einen Container oder eine Sammlung zu durchlaufen. Enumeratoren können zum Lesen der Daten in der Sammlung verwendet werden, sie können jedoch nicht zum Ändern der zugrunde liegenden Sammlung verwendet werden, wohingegen IEnumerable eine Schnittstelle ist, die eine Methode GetEnumerator definiert, die eine IEnumerator-Schnittstelle zurückgibt, die wiederum schreibgeschützten Zugriff ermöglicht eine Sammlung.
Aspose.Cells APIs bieten eine Reihe von Enumeratoren. In diesem Artikel werden jedoch hauptsächlich die drei unten aufgeführten Typen erläutert.
- Cells Zähler
- Zeilen-Enumerator
- Spalten-Enumerator
So verwenden Sie Enumeratoren
Cells Zähler
Es gibt verschiedene Möglichkeiten, auf den Enumerator Cells zuzugreifen, und je nach Anwendungsanforderungen kann jede dieser Methoden verwendet werden. Hier sind die Methoden, die den Zellenenumerator zurückgeben.
Alle oben genannten Methoden geben den Enumerator zurück, der das Durchlaufen der Sammlung initialisierter Zellen ermöglicht.
Das folgende Codebeispiel veranschaulicht die Implementierung der IEnumerator-Schnittstelle für eine Cells-Sammlung.
Zeilen-Enumerator
Auf den Zeilenenumerator kann bei Verwendung von zugegriffen werdenRowCollection.GetEnumerator Methode. Das folgende Codebeispiel demonstriert die Implementierung der IEnumerator-Schnittstelle fürRowCollection.
Spalten-Enumerator
Auf den Spaltenenumerator kann bei Verwendung von zugegriffen werdenColumnCollection.GetEnumerator Methode. Das folgende Codebeispiel demonstriert die Implementierung der IEnumerator-Schnittstelle fürColumnCollection.
Wo man Enumeratoren verwendet
Um die Vorteile der Verwendung von Enumeratoren zu diskutieren, nehmen wir ein Echtzeitbeispiel.
Szenario
Eine Anwendungsanforderung besteht darin, alle Zellen in einem bestimmten Bereich zu durchlaufenArbeitsblattihre Werte zu lesen. Zur Umsetzung dieses Ziels kann es mehrere Möglichkeiten geben. Nachfolgend werden einige davon demonstriert.
Verwenden des Anzeigebereichs
Verwenden von MaxDataRow und MaxDataColumn
Wie Sie sehen können, verwenden beide oben genannten Ansätze eine mehr oder weniger ähnliche Logik, das heißt; Durchlaufen Sie alle Zellen in der Sammlung, um die Zellwerte zu lesen. Dies könnte aus mehreren Gründen problematisch sein, wie unten erläutert.
- APIs wieMaxRow, MaxDataRow, MaxColumn, MaxDataColumn & MaxDisplayRangeerfordern zusätzliche Zeit, um die entsprechenden Statistiken zu sammeln. Falls die Datenmatrix (Zeilen x Spalten) groß ist, kann die Verwendung dieser APIs zu Leistungseinbußen führen.
- In den meisten Fällen werden nicht alle Zellen in einem bestimmten Bereich instanziiert. In solchen Situationen ist die Überprüfung jeder Zelle in der Matrix nicht so effizient wie die Überprüfung nur der initialisierten Zellen.
- Der Zugriff auf eine Zelle in einer Schleife als Cells Zeile, Spalte führt dazu, dass alle Zellobjekte in einem Bereich instanziiert werden, was schließlich zu einer OutOfMemoryException führen kann.
Abschluss
Basierend auf den oben genannten Fakten sind die folgenden möglichen Szenarien, in denen Enumeratoren verwendet werden sollten.
- Es ist ein schreibgeschützter Zugriff auf die Zellsammlung erforderlich, d. h. Die Anforderung besteht darin, nur die Zellen zu untersuchen.
- Eine große Anzahl von Zellen soll durchquert werden.
- Nur initialisierte Zellen/Zeilen/Spalten werden durchlaufen.