Hur och var man använder enumerators

Hur man använder Enumerators

Cells Enumerator

Det finns olika sätt att komma åt Cells Enumerator, och man kan använda vilken som helst av dessa metoder baserat på applikationskraven. Här är metoderna som returnerar celluppräkningen.

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

Alla de ovan nämnda metoderna returnerar enumeratorn som gör det möjligt att gå igenom samlingen av celler som har initierats.

Följande kodexempel visar implementeringen av IEnumerator-gränssnittet för en Cells-samling.

Raduppräkning

Rows Enumerator kan nås när du använderRowCollection.GetEnumerator metod. Följande kodexempel visar implementeringen av IEnumerator-gränssnittet förRowCollection.

Kolumnuppräkning

Kolumnuppräkningen kan nås när du använderColumnCollection.GetEnumerator metod. Följande kodexempel visar implementeringen av IEnumerator-gränssnittet förKolumnsamling.

Var kan man använda Enumerators

För att diskutera fördelarna med att använda uppräknare, låt oss ta ett exempel i realtid.

Scenario

Ett applikationskrav är att korsa alla celler i en givenArbetsbladatt läsa deras värderingar. Det kan finnas flera sätt att genomföra detta mål. Några få visas nedan.

Använda visningsintervall

Använda MaxDataRow & MaxDataColumn

Som du kan observera att båda de ovan nämnda tillvägagångssätten använder mer eller mindre liknande logik, det vill säga; loop över alla celler i samlingen för att läsa cellvärdena. Detta kan vara problematiskt av ett antal skäl som diskuteras nedan.

  1. API:er som t.exMaxRow, MaxDataRow, MaxColumn, MaxDataColumn & MaxDisplayRangekräver extra tid för att samla in motsvarande statistik. Om datamatrisen (rader x kolumner) är stor, kan användningen av dessa API:er innebära en prestationsstraff.
  2. de flesta fall instansieras inte alla celler i ett givet intervall. I sådana situationer är det inte så effektivt att kontrollera varje cell i matrisen jämfört med att kontrollera endast de initialiserade cellerna.
  3. Åtkomst till en cell i en loop som Cells rad, kolumn gör att alla cellobjekt i ett intervall instansieras, vilket så småningom kan orsaka OutOfMemoryException.

Slutsats

Baserat på ovan nämnda fakta är följande möjliga scenarier där uppräknare bör användas.

  1. Skrivskyddad åtkomst till cellsamlingen krävs, det vill säga; kravet är att endast inspektera cellerna.
  2. Ett stort antal celler ska passeras.
  3. Endast initierade celler/rader/kolumner som ska passeras.