Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 22702|Yanıt: 0

[Kaynak] C#'da koleksiyonlar için birkaç tür rollup vardır

[Bağlantıyı kopyala]
Yayınlandı 11.11.2014 08:44:59 | | |
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





Önceki:Bekarlar Günü arifesinde çoğu penise açık bir mektup
Önümüzdeki:C# Genel Range Rover (Tur)
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com