Wie und wo Enumeratoren verwendet werden

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.

  1. Cells.GetEnumerator
  2. Row.GetEnumerator
  3. Range.GetEnumerator

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.

  1. 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.
  2. 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.
  3. 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.

  1. Es ist ein schreibgeschützter Zugriff auf die Zellsammlung erforderlich, d. h. Die Anforderung besteht darin, nur die Zellen zu untersuchen.
  2. Eine große Anzahl von Zellen soll durchquert werden.
  3. Nur initialisierte Zellen/Zeilen/Spalten werden durchlaufen.