Cómo y dónde utilizar los enumeradores

Cómo utilizar enumeradores

Cells Enumerador

Hay varias formas de acceder al enumerador Cells y se puede utilizar cualquiera de estos métodos según los requisitos de la aplicación. Estos son los métodos que devuelven el enumerador de celdas.

  1. Cells.GetEnumerator
  2. Fila.GetEnumerator
  3. Rango.GetEnumerator

Todos los métodos mencionados anteriormente devuelven el enumerador que permite recorrer la colección de celdas que se han inicializado.

El siguiente ejemplo de código demuestra la implementación de la interfaz IEnumerator para una colección Cells.

Enumerador de filas

Se puede acceder al enumerador de filas mientras se utiliza elRowCollection.GetEnumerator método. El siguiente ejemplo de código demuestra la implementación de la interfaz IEnumerator paraColección de filas.

Enumerador de columnas

Se puede acceder al enumerador de columnas mientras se utiliza elColumnCollection.GetEnumerator método. El siguiente ejemplo de código demuestra la implementación de la interfaz IEnumerator paraColección de columnas.

Dónde utilizar enumeradores

Para analizar las ventajas de utilizar enumeradores, tomemos un ejemplo en tiempo real.

Guión

Un requisito de la aplicación es atravesar todas las celdas en un determinadoHoja de cálculopara leer sus valores. Podría haber varias formas de implementar este objetivo. Algunos se demuestran a continuación.

Usando el rango de visualización

Usando MaxDataRow y MaxDataColumn

Como puede observar, ambos enfoques mencionados anteriormente utilizan una lógica más o menos similar, es decir; recorra todas las celdas de la colección para leer los valores de las celdas. Esto podría resultar problemático por varias razones, como se analiza a continuación.

  1. API comofila máxima, Fila de datos máx., Columna máxima, Columna de datos máx. & Rango máximo de visualizaciónrequieren más tiempo para recopilar las estadísticas correspondientes. En caso de que la matriz de datos (filas x columnas) sea grande, el uso de estas API podría imponer una penalización en el rendimiento.
  2. En la mayoría de los casos, no se crean instancias de todas las celdas de un rango determinado. En tales situaciones, verificar cada celda de la matriz no es tan eficiente en comparación con verificar solo las celdas inicializadas.
  3. Acceder a una celda en un bucle como Cells fila, columna hará que se creen instancias de todos los objetos de celda en un rango, lo que eventualmente puede causar OutOfMemoryException.

Conclusión

Con base en los hechos mencionados anteriormente, los siguientes son los posibles escenarios en los que se deben utilizar enumeradores.

  1. Se requiere acceso de sólo lectura a la colección de células, es decir; el requisito es inspeccionar únicamente las celdas.
  2. Se debe atravesar un gran número de celdas.
  3. Sólo se recorrerán las celdas/filas/columnas inicializadas.