Come e dove utilizzare gli enumeratori

Come usare gli enumeratori

Cells Enumeratore

Esistono vari modi per accedere all’enumeratore Cells e si può utilizzare uno qualsiasi di questi metodi in base ai requisiti dell’applicazione. Ecco i metodi che restituiscono l’enumeratore di celle.

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

Tutti i metodi sopra menzionati restituiscono l’enumeratore che consente di attraversare la raccolta di celle che sono state inizializzate.

Nell’esempio di codice seguente viene illustrata l’implementazione dell’interfaccia IEnumerator per una raccolta Cells.

Enumeratore di righe

È possibile accedere all’enumeratore di righe durante l’utilizzo diRowCollection.GetEnumerator metodo. Nell’esempio di codice seguente viene illustrata l’implementazione dell’interfaccia IEnumerator perRowCollection.

Enumeratore di colonne

È possibile accedere all’enumeratore di colonne durante l’utilizzo diColumnCollection.GetEnumerator metodo. Nell’esempio di codice seguente viene illustrata l’implementazione dell’interfaccia IEnumerator perRaccolta di colonne.

Dove usare gli enumeratori

Per discutere i vantaggi dell’utilizzo degli enumeratori, facciamo un esempio in tempo reale.

Scenario

Un requisito dell’applicazione è attraversare tutte le celle in un datoFoglio di lavoroper leggere i loro valori. Ci potrebbero essere diversi modi per implementare questo obiettivo. Alcuni sono dimostrati di seguito.

Utilizzo dell’intervallo di visualizzazione

Utilizzo di MaxDataRow e MaxDataColumn

Come puoi osservare, entrambi gli approcci sopra menzionati utilizzano una logica più o meno simile, ovvero; eseguire il ciclo su tutte le celle della raccolta per leggere i valori delle celle. Questo potrebbe essere problematico per una serie di motivi come discusso di seguito.

  1. API comeMaxRow, MaxDataRow, Colonna massima, MaxDataColumn & MaxDisplayRangerichiedono più tempo per raccogliere le statistiche corrispondenti. Nel caso in cui la matrice di dati (righe x colonne) sia grande, l’utilizzo di queste API potrebbe imporre una riduzione delle prestazioni.
  2. Nella maggior parte dei casi, non tutte le celle in un determinato intervallo vengono istanziate. In tali situazioni controllare ogni cella della matrice non è così efficiente rispetto a controllare solo le celle inizializzate.
  3. L’accesso a una cella in un ciclo come riga Cells, colonna causerà l’istanziazione di tutti gli oggetti cella in un intervallo, il che potrebbe eventualmente causare OutOfMemoryException.

Conclusione

Sulla base dei fatti sopra menzionati, i seguenti sono i possibili scenari in cui dovrebbero essere utilizzati gli enumeratori.

  1. È richiesto l’accesso in sola lettura della raccolta di celle, ovvero; il requisito è quello di ispezionare solo le celle.
  2. Un gran numero di celle deve essere attraversato.
  3. Solo celle/righe/colonne inizializzate da attraversare.