Numaralandırıcılar Nasıl ve Nerede Kullanılır?

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 göre bu yöntemlerden herhangi biri kullanılabilir. İşte hücre numaralandırıcısını döndüren yöntemler.

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

Yukarıda belirtilen yöntemlerin tümü, başlatılmış olan hücrelerin koleksiyonunda gezinmeye izin veren numaralandırıcıyı döndürür.

Aşağıdaki kod örneği, bir Cells koleksiyonu için IEnumerator arabiriminin uygulanmasını gösterir.

Satır Numaralandırıcı

Satırlar Numaralandırıcı kullanılırken 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ılırken erişilebilir.ColumnCollection.GetEnumerator yöntem. Aşağıdaki kod örneği, IEnumerator arabiriminin uygulanmasını gösterir.Sütun Koleksiyonu.

Numaralandırıcılar nerede kullanılır?

Numaralandırıcı kullanmanın avantajlarını tartışmak için gerçek zamanlı bir örnek ele alalım.

Senaryo

Bir uygulama gereksinimi, belirli bir hücredeki tüm hücreleri geçmektir.Çalışma kağıdıdeğerlerini okumaktır. Bu hedefi gerçekleştirmenin birkaç yolu olabilir. Birkaçı aşağıda gösterilmiştir.

Görüntüleme Aralığını Kullanma

MaxDataRow ve MaxDataColumn’u Kullanma

Yukarıda bahsedilen yaklaşımların her ikisinin de aşağı yukarı benzer bir mantık kullandığını gözlemleyebileceğiniz gibi; hücre değerlerini okumak için koleksiyondaki tüm hücreler üzerinde döngü yapın. Bu, aşağıda tartışıldığı gibi birkaç nedenden dolayı sorunlu olabilir.

  1. gibi API’lerMaxRow, MaxDataRow, Maksimum Sütun, MaxDataColumn & Maksimum Görüntü Aralığıilgili istatistikleri toplamak için fazladan zaman gerektirir. Veri matrisinin (satır x sütun) büyük olması durumunda, bu API’lerin kullanılması performans düşüşüne neden olabilir.
  2. Çoğu durumda, belirli bir aralıktaki tüm hücreler örneklenmez. Bu gibi durumlarda, matristeki her hücreyi kontrol etmek, yalnızca başlatılmış hücreleri kontrol etmeye kıyasla o kadar verimli değildir.
  3. Bir döngüdeki bir hücreye Cells satır, sütun olarak erişilmesi, bir aralıktaki tüm hücre nesnelerinin somutlaştırılmasına neden olur ve bu da sonunda 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.

  1. Hücre koleksiyonuna salt okunur erişim gereklidir, yani; gereklilik sadece hücreleri incelemektir.
  2. Çok sayıda hücre geçilecek.
  3. Geçiş yapılacak yalnızca başlatılmış hücreler/satırlar/sütunlar.