如何以及在何处使用枚举器

如何使用枚举器

Cells 枚举器

访问 Cells 枚举器的方法有多种,可以根据应用程序要求使用其中任何一种方法。以下是返回单元格枚举器的方法。

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

所有上述方法都返回允许遍历已初始化的单元格集合的枚举器。

以下代码示例演示了 Cells 集合的 IEnumerator 接口的实现。

行枚举器

可以在使用时访问行枚举器RowCollection.GetEnumerator方法。以下代码示例演示了 IEnumerator 接口的实现行集合.

列枚举器

可以在使用时访问列枚举器ColumnCollection.GetEnumerator方法。以下代码示例演示了 IEnumerator 接口的实现列集合.

在哪里使用枚举器

为了讨论使用枚举器的优点,让我们举一个实时示例。

设想

一个应用需求是遍历给定的所有单元格工作表阅读他们的价值观。可以有多种方法来实现这一目标。下面演示了一些。

使用显示范围

使用 MaxDataRow 和 MaxDataColumn

正如您所观察到的,上述两种方法或多或少都使用相似的逻辑,即;循环遍历集合中的所有单元格以读取单元格值。由于如下所述的多种原因,这可能会产生问题。

  1. API 例如最大行数, 最大数据行, 最大列数, 最大数据列 & 最大显示范围需要额外的时间来收集相应的统计数据。如果数据矩阵(行 x 列)很大,使用这些 API 可能会造成性能损失。
  2. 在大多数情况下,并非给定范围内的所有单元格都会被实例化。在这种情况下,与仅检查初始化的单元相比,检查矩阵中的每个单元的效率并不高。
  3. 循环访问单元格作为 Cells 行、列将导致某个范围内的所有单元格对象被实例化,这最终可能导致 OutOfMemoryException。

结论

基于上述事实,以下是应使用枚举器的可能场景。

  1. 需要对单元集合进行只读访问,即;要求是仅检查细胞。
  2. 需要遍历大量的单元格。
  3. 仅要遍历初始化的单元格/行/列。