Her elemanı dolaşarak erişilebilen bir nesne kümesini temsil eden bir koleksiyon (özellikle, foreach döngüsü kullanılarak erişilebiliyor) Bir koleksiyon birden fazla eleman içerir, yani bir koleksiyon sınıfı nesnesi ve N eleman nesnesi vardır
Herhangi bir koleksiyon sınıfı IEnumerable arayüzünü uyguladığı için, herhangi bir koleksiyon sınıfı nesnesinin GetEnumerator() yöntemi vardır; bu yöntem, ne bir koleksiyon sınıfı nesnesi ne de bir koleksiyon öğesi sınıf nesnesi olan IEnumerator arayüzünü uygulayan bir nesneyi döndürebilir; bu nesne ne bir koleksiyon sınıfı nesnesi ne de bir koleksiyon öğesi sınıf nesnesidir. Bu nesne, koleksiyon sınıfı nesnesindeki her eleman nesnesini yineleme yapmanızı sağlar
Eğer koleksiyon sınıfı kullanıcı tarafından tanımlanan bir koleksiyon sınıfıysa, kullanıcı GetEnumerator() yöntemini uygulamalıdır, aksi takdirde döngüler kullanılamaz. Elbette, bu özel koleksiyon sınıfına (arayüzü uygulayan sınıf) karşılık gelen IEnumerator sınıfı da özelleştirilmelidir
Örneğin, ArrayList koleksiyon sınıfına karşılık gelen IEnumerator ArrayListEnumeratorSimple'dır Dizi koleksiyonu sınıfına karşılık gelen IEnumerator SZArrayEnumerator'dur (.NET Framework Class Library dokümantasyonu (MSDN) hiçbir sınıf kapsamamıştır)
1. System.Colloctions'ta koleksiyonun davranışını temsil eden arayüzler şunlardır: 1) İKollesyon'u Tüm koleksiyonlar için büyüklüğünü, enum sayısını ve senkronizasyon yöntemlerini tanımlayın. IEnumerable'dan türetilmiştir Koleksiyon sınıfının en temel davranışını tanımlar ve tüm koleksiyon sınıfları bu arayüzü (temel arayüz) uygular Ama davranışı çok basit: esas olarak bir Count özelliğidir ve tek başına uygulamak pek mantıklı değildir
2)IEnumerable Bir küme üzerinde basit yinelemeleri destekleyen bir enumerasyon ortaya çıkarın Sadece bir yöntemi vardır, GetEnumerator(), bu da koleksiyonu dolaşabileceği bir IEnumerator arayüzü döndürür Temelde tüm koleksiyon sınıfları bu arayüzü uygular
3) IList IList uygulaması, üyeleri için indeks ile erişilebilen sıralanabilir ve bir değerler koleksiyonudur ve kendisi ICollection ile IEnumerable arayüzlerini uygular tüm listeler için soyut temel sınıftır. IList uygulamalarının üç kategorisi vardır: yalnızca okunabilir, sabit boyutlu ve değişken boyutu.
4) Kimlik Sözlüğü IDictionary uygulaması, anahtar/değer çiftlerinden oluşan bir koleksiyondur ve kendisi ICollection ile IEnumerable arayüzlerini uygular anahtar/değer çiftlerinden oluşan bir koleksiyonun temel arayüzüdür. Kimlik Tanımı uygulamalarının üç kategorisi vardır: yalnızca okunan, sabit boyutlu ve değişken boyutlu. IDictionary, sözlük, harita veya shash list olarak adlandırılabilir ve anahtarlara (herhangi türden) dayalı değerlere erişir.
2. System.Collections'ta doğrudan kullanılabilecek koleksiyon sınıfları şunlardır: 1)ArrayList Arayüzleri uygula: IList, ICollection, IEnumerable Koleksiyon değiştirilmediği sürece, ArrayList aynı anda birden fazla okuyucuyu güvenle destekleyebilir ArrayList'e öğeler eklendikçe, kapasite talep üzerine otomatik olarak yeniden tahsis edilerek (2 kat artış) artırılır Eğer bir nesne dizisi oluşturmanız gerekiyorsa ama dizinin boyutunu önceden bilmiyorsanız, ArrayList kullanabilirsiniz ArrayList, tüm öğeleri nesne olarak adlandırır, bu yüzden ArrayList'te öğelere erişirken bu öğenin yazılması gerekir Artılar: Boyutu dinamik olarak değiştirmek, elemanların esnek ve kolay takma ve çıkarılması, sıralama yapılabilirlik Dezavantajlar: Yerleştirme performansı diziler kadar iyi değil, güçlü tipler kadar iyi değil
2)BitArray Arayüzleri uygula: ICollection ve IEnumerable Sıkıştırılmış bit değer dizilerini yönetin.
3) Hashtable Arayüzleri uygulayın: IDictionary, ICollection, IEnumerable Hashtable'a bazı öğeleri özgürce ekleyip çıkarabilirsiniz, bazıları ArrayList gibi, ancak performans yükü olmadan
4) SortedList Arayüzleri uygulayın: IDictionary, ICollection, IEnumerable SortedLIst, ArrayList ve Hashtable'ın avantajlarını birleştirir ve anahtar değere göre sıralanabilir
5) Kuyruk Arayüzleri uygula: ICollection ve IEnumerable Queque'ler, bireysel öğelere ilk girer, ilk çıkar erişimi olan kuyruklardır IEnumerator nesnesinin kuyruk içindeki öğeler arasında yineleme yapmasını sağlamak için Queque nesnesinin GetEnumerator() yöntemini çağırabilirsiniz
6) Stack Arayüzleri uygula: ICollection ve IEnumerable Yığın, bireysel öğelere son giren, ilk çıkan temeliyle erişen bir yığındır Stack nesnesinin GetEnumerator() yöntemini çağırarak IEnumerator nesnesinin yığındaki öğeler arasında yineleme yapmasını sağlayabilirsiniz
3. Yukarıda bahsedilen koleksiyon sınıflarının tamamı genel koleksiyon sınıfıdır ve kabul ettikleri elemanların çoğu, nesne eklendiğinde Nesne tipindendir Koleksiyondan sonra orijinal tür bilgisi kaybolur - yani bu genel koleksiyon sınıfları güçlü şekilde tiplenmez Çözüm yolu, güçlü tipli koleksiyon sınıflarını kullanmaktır System.Collections isim alanı System.Collections.Specialized isim alanı Bazı sınıflar gereksinimleri karşılayabilir ve doğrudan kullanılabilir veya miras alınabilir
|