Cómo y dónde utilizar los enumeradores
Un enumerador es un objeto que brinda la capacidad de atravesar un contenedor o una colección. Los enumeradores se pueden usar para leer los datos de la colección, pero no se pueden usar para modificar la colección subyacente, mientras que IEnumerable es una interfaz que define un método GetEnumerator que devuelve una interfaz IEnumerator, esto, a su vez, permite acceso de solo lectura a Una colección.
Las API Aspose.Cells proporcionan varios enumeradores; sin embargo, este artículo analiza principalmente los tres tipos que se enumeran a continuación.
- Cells Enumerador
- Enumerador de filas
- Enumerador de columnas
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.
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.
- 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.
- 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.
- 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.
- Se requiere acceso de sólo lectura a la colección de células, es decir; el requisito es inspeccionar únicamente las celdas.
- Se debe atravesar un gran número de celdas.
- Sólo se recorrerán las celdas/filas/columnas inicializadas.