Hur och var man använder enumerators
En uppräkning är ett objekt som ger möjlighet att passera en behållare eller en samling. Enumeratorer kan användas för att läsa data i samlingen, men de kan inte användas för att modifiera den underliggande samlingen, medan IEnumerable är ett gränssnitt som definierar en metod GetEnumerator som returnerar ett IEnumerator-gränssnitt, vilket i sin tur tillåter skrivskyddad tillgång till en samling.
Aspose.Cells API:er tillhandahåller ett gäng uppräknare, men den här artikeln diskuterar huvudsakligen de tre typerna som listas nedan.
- Cells Enumerator
- Raduppräkning
- Kolumnuppräkning
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.
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.
- 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.
- I 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.
- Å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.
- Skrivskyddad åtkomst till cellsamlingen krävs, det vill säga; kravet är att endast inspektera cellerna.
- Ett stort antal celler ska passeras.
- Endast initierade celler/rader/kolumner som ska passeras.