Как и где использовать перечислители
Перечислитель — это объект, который предоставляет возможность перемещаться по контейнеру или коллекции. Перечислители можно использовать для чтения данных в коллекции, но их нельзя использовать для изменения базовой коллекции, тогда как IEnumerable — это интерфейс, который определяет один метод GetEnumerator, который возвращает интерфейс IEnumerator, что, в свою очередь, обеспечивает доступ только для чтения к Коллекция.
Aspose.Cells API предоставляют множество перечислителей, однако в этой статье в основном обсуждаются три типа, перечисленные ниже.
- Cells Счетчик
- Перечислитель строк
- Перечислитель столбцов
Как использовать перечислители
Cells Счетчик
Существуют различные способы доступа к перечислителю Cells, и можно использовать любой из этих методов в зависимости от требований приложения. Ниже приведены методы, которые возвращают перечислитель ячеек.
Все вышеупомянутые методы возвращают перечислитель, который позволяет перемещаться по коллекции инициализированных ячеек.
В следующем примере кода демонстрируется реализация интерфейса IEnumerator для коллекции Cells.
Перечислитель строк
Доступ к перечислителю строк можно получить при использованииRowCollection.GetEnumerator метод. В следующем примере кода демонстрируется реализация интерфейса IEnumerator дляRowCollection.
Перечислитель столбцов
Доступ к счетчику столбцов можно получить при использованииColumnCollection.GetEnumerator метод. В следующем примере кода демонстрируется реализация интерфейса IEnumerator дляСтолбецКоллекция.
Где использовать перечислители
Чтобы обсудить преимущества использования перечислителей, давайте рассмотрим пример в реальном времени.
Сценарий
Требование приложения — пройти все ячейки в заданномРабочий листпрочитать их значения. Способов реализации этой цели может быть несколько. Некоторые из них продемонстрированы ниже.
Использование диапазона отображения
Использование MaxDataRow и MaxDataColumn
Как вы можете заметить, оба вышеупомянутых подхода используют более или менее схожую логику, то есть; пройдите по всем ячейкам коллекции, чтобы прочитать значения ячеек. Это может быть проблематично по ряду причин, которые обсуждаются ниже.
- API, такие какМаксРоу, Максдатаров, МаксКолонн, Максдатаколонн & Макс.диапазон отображениятребуется дополнительное время для сбора соответствующей статистики. Если матрица данных (строки x столбцы) велика, использование этих API может привести к снижению производительности.
- В большинстве случаев не все ячейки в заданном диапазоне создаются. В таких ситуациях проверять каждую ячейку матрицы не так эффективно, как проверять только инициализированные ячейки.
- Доступ к ячейке в цикле как строке Cells, столбцу приведет к созданию экземпляров всех объектов ячеек в диапазоне, что в конечном итоге может вызвать исключение OutOfMemoryException.
Заключение
Основываясь на вышеупомянутых фактах, ниже приведены возможные сценарии использования счетчиков.
- Требуется доступ только для чтения к коллекции ячеек, т.е. требование состоит в том, чтобы проверять только клетки.
- Необходимо пройти большое количество ячеек.
- Для перемещения подлежат только инициализированные ячейки/строки/столбцы.