Comment et où utiliser les énumérateurs

Comment utiliser les énumérateurs

Cells Recenseur

Il existe différentes façons d’accéder à l’énumérateur Cells, et on peut utiliser l’une de ces méthodes en fonction des exigences de l’application. Voici les méthodes qui renvoient l’énumérateur de cellules.

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

Toutes les méthodes mentionnées ci-dessus retournent l’énumérateur qui permet de parcourir la collection de cellules qui ont été initialisées.

L’exemple de code suivant illustre l’implémentation de l’interface IEnumerator pour une collection Cells.

Énumérateur de lignes

L’énumérateur de lignes est accessible lors de l’utilisation deRowCollection.GetEnumerator méthode. L’exemple de code suivant illustre l’implémentation de l’interface IEnumerator pourRowCollection.

Énumérateur de colonnes

L’énumérateur de colonnes est accessible lors de l’utilisation deColumnCollection.GetEnumeratorColumnCollection.GetEnumerator méthode. L’exemple de code suivant illustre l’implémentation de l’interface IEnumerator pourColonneCollection.

Où utiliser les énumérateurs

Afin de discuter des avantages de l’utilisation d’énumérateurs, prenons un exemple en temps réel.

Scénario

Une exigence de l’application est de parcourir toutes les cellules d’unFeuille de travailpour lire leurs valeurs. Il pourrait y avoir plusieurs façons de mettre en œuvre cet objectif. Quelques-uns sont illustrés ci-dessous.

Utilisation de la plage d’affichage

Utilisation de MaxDataRow et MaxDataColumn

Comme vous pouvez le constater, les deux approches mentionnées ci-dessus utilisent une logique plus ou moins similaire, c’est-à-dire ; boucle sur toutes les cellules de la collection pour lire les valeurs des cellules. Cela pourrait être problématique pour un certain nombre de raisons, comme indiqué ci-dessous.

  1. API telles queMaxRow, MaxDataRow, MaxColonne, MaxDataColumn & MaxDisplayRangebesoin de temps supplémentaire pour rassembler les statistiques correspondantes. Dans le cas où la matrice de données (lignes x colonnes) est volumineuse, l’utilisation de ces API peut entraîner une baisse des performances.
  2. Dans la plupart des cas, toutes les cellules d’une plage donnée ne sont pas instanciées. Dans de telles situations, vérifier chaque cellule de la matrice n’est pas aussi efficace que de vérifier uniquement les cellules initialisées.
  3. L’accès à une cellule dans une boucle en tant que ligne Cells, colonne entraînera l’instanciation de tous les objets de cellule d’une plage, ce qui peut éventuellement provoquer OutOfMemoryException.

Conclusion

Sur la base des faits mentionnés ci-dessus, voici les scénarios possibles dans lesquels les enquêteurs doivent être utilisés.

  1. Un accès en lecture seule à la collection de cellules est requis, c’est-à-dire ; l’exigence est d’inspecter uniquement les cellules.
  2. Un grand nombre de cellules sont à traverser.
  3. Seules les cellules/lignes/colonnes initialisées doivent être traversées.