Numaralandırıcılar Nasıl ve Nerede Kullanılır?
Numaralandırıcı, bir kapsayıcı veya koleksiyon arasında geçiş yapma olanağı sağlayan bir nesnedir. Numaralandırıcılar koleksiyondaki verileri okumak için kullanılabilir, ancak temeldeki koleksiyonu değiştirmek için kullanılamazlar; oysa IEnumerable, bir IEnumerator arayüzü döndüren GetEnumerator yöntemini tanımlayan bir arayüzdür; bu da, salt okunur erişime izin verir. bir koleksiyon.
Aspose.Cells API’ler bir dizi numaralandırıcı sağlar, ancak bu makalede esas olarak aşağıda listelenen üç tür tartışılmaktadır.
- Cells Numaralandırıcı
- Satır Numaralandırıcı
- Sütun Numaralandırıcı
Numaralandırıcılar nasıl kullanılır?
Cells Numaralandırıcı
Cells Numaralandırıcıya erişmenin çeşitli yolları vardır ve uygulama gereksinimlerine bağlı olarak bu yöntemlerden herhangi biri kullanılabilir. Hücre numaralandırıcısını döndüren yöntemler şunlardır.
Yukarıda belirtilen yöntemlerin tümü, başlatılmış olan hücrelerin toplanmasına izin veren numaralandırıcıyı döndürür.
Aşağıdaki kod örneği, Cells koleksiyonu için IEnumerator arabiriminin uygulanmasını gösterir.
Satır Numaralandırıcı
Satır Numaralandırıcıya, kullanılarak erişilebilir.RowCollection.GetEnumerator yöntem. Aşağıdaki kod örneği, IEnumerator arabiriminin uygulanmasını gösterir.Satır Koleksiyonu.
Sütun Numaralandırıcı
Sütun Numaralandırıcıya, kullanılarak erişilebilir.ColumnCollection.GetEnumerator yöntem. Aşağıdaki kod örneği, IEnumerator arabiriminin uygulanmasını gösterir.SütunKoleksiyonu.
Numaralandırıcılar nerede kullanılır?
Numaralandırıcı kullanmanın avantajlarını tartışmak için gerçek zamanlı bir örnek alalım.
Senaryo
Bir uygulama gereksinimi, belirli bir hücredeki tüm hücreleri geçmektirÇalışma kağıdıdeğerlerini okumak için. Bu hedefi gerçekleştirmenin birkaç yolu olabilir. Birkaç tanesi aşağıda gösterilmiştir.
Görüntü Aralığını Kullanma
MaxDataRow ve MaxDataColumn’u kullanma
Gördüğünüz gibi yukarıda bahsedilen her iki yaklaşım da aşağı yukarı benzer mantık kullanıyor; Hücre değerlerini okumak için koleksiyondaki tüm hücrelerin üzerinde döngü yapın. Bu, aşağıda tartışıldığı gibi çeşitli nedenlerden dolayı sorunlu olabilir.
- API’ler gibiMaxRow, MaxDataRow, Maksimum Sütun, MaxDataColumn & Maksimum Görüntü Aralığıilgili istatistikleri toplamak için ekstra zamana ihtiyaç vardır. Veri matrisinin (satır x sütun) büyük olması durumunda, bu API’lerin kullanılması performans kaybına neden olabilir.
- Çoğu durumda, belirli bir aralıktaki hücrelerin tümü başlatılmaz. Bu gibi durumlarda matristeki her hücreyi kontrol etmek, yalnızca başlatılan hücreleri kontrol etmekle karşılaştırıldığında çok verimli değildir.
- Döngüdeki bir hücreye Cells satır, sütun olarak erişilmesi, aralıktaki tüm hücre nesnelerinin başlatılmasına neden olur ve bu da sonuçta OutOfMemoryException’a neden olabilir.
Çözüm
Yukarıda belirtilen gerçeklere dayanarak, numaralandırıcıların kullanılması gereken olası senaryolar aşağıdadır.
- Hücre koleksiyonuna salt okunur erişim gereklidir; gerekli olan sadece hücreleri incelemektir.
- Çok sayıda hücrenin geçilmesi gerekiyor.
- Yalnızca geçilecek hücreler/satırlar/sütunlar başlatıldı.