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 verwendet werden, um die Daten in der Sammlung zu lesen, aber sie können nicht verwendet werden, um die zugrunde liegende Sammlung zu ändern, während IEnumerable eine Schnittstelle ist, die eine Methode GetEnumerator definiert, die eine IEnumerator-Schnittstelle zurückgibt, die wiederum einen schreibgeschützten Zugriff auf ermöglicht eine Sammlung.
Aspose.Cells APIs bieten eine Reihe von Enumeratoren, dieser Artikel behandelt jedoch hauptsächlich die drei unten aufgeführten Typen.
- Cells Zähler
- Zeilen-Enumerator
- Spalten-Enumerator
Verwendung von Enumeratoren
Cells Zähler
Es gibt verschiedene Möglichkeiten, auf den Cells-Enumerator zuzugreifen, und je nach Anwendungsanforderungen kann jede dieser Methoden verwendet werden. Hier sind die Methoden, die den Zellen-Enumerator zurückgeben.
Alle oben genannten Methoden geben den Enumerator zurück, der das Durchlaufen der Sammlung von initialisierten Zellen ermöglicht.
Das folgende Codebeispiel veranschaulicht die Implementierung der IEnumerator-Schnittstelle für eine Cells-Auflistung.
Zeilen-Enumerator
Auf den Rows Enumerator kann zugegriffen werden, während Sie die verwendenRowCollection.GetEnumerator Methode. Das folgende Codebeispiel veranschaulicht die Implementierung der IEnumerator-Schnittstelle fürRowCollection.
Spalten-Enumerator
Auf den Columns Enumerator kann während der Verwendung von zugegriffen werdenColumnCollection.GetEnumerator Methode. Das folgende Codebeispiel veranschaulicht die Implementierung der IEnumerator-Schnittstelle fürColumnCollection.
Wo Enumeratoren verwendet werden
Um die Vorteile der Verwendung von Enumeratoren zu erörtern, nehmen wir ein Echtzeitbeispiel.
Szenario
Eine Anwendungsanforderung besteht darin, alle Zellen in einem gegebenen zu durchlaufenArbeitsblattihre Werte zu lesen. Es könnte mehrere Möglichkeiten geben, dieses Ziel umzusetzen. Einige werden unten demonstriert.
Anzeigebereich verwenden
Verwenden von MaxDataRow & MaxDataColumn
Wie Sie feststellen können, verwenden beide oben genannten Ansätze eine mehr oder weniger ähnliche Logik, das heißt; Schleife über alle Zellen in der Sammlung, um die Zellenwerte zu lesen. Dies könnte aus einer Reihe von Gründen problematisch sein, wie unten diskutiert wird.
- APIs wie zMaxRow, MaxDataRow, MaxSpalte, 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 es nicht so effizient, jede Zelle in der Matrix zu prüfen, als nur die initialisierten Zellen zu prüfen.
- 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 OutOfMemoryException verursachen kann.
Fazit
Basierend auf den oben genannten Fakten sind die folgenden möglichen Szenarien, in denen Enumeratoren verwendet werden sollten.
- Nur-Lese-Zugriff auf die Zellsammlung ist erforderlich, das heißt; Die Anforderung besteht darin, nur die Zellen zu inspizieren.
- Eine große Anzahl von Zellen soll durchquert werden.
- Nur initialisierte Zellen/Zeilen/Spalten werden durchlaufen.