Bu yazıda .NET 2.0 ile birlikte gelmiş ve .NET dillerinin üstünlüğünün bir özelliği olarak görülen Generic veri tiplerini işleyeceğiz. Öncelikle konuyla ilgili koleksiyon sınıfları hakkında bir özet geçmemiz faydalı olacaktır.
BilindiÄŸi gibi .Net Framework, koleksiyonları tanımlamak ve amacına uygun kullanmak için birçok sınıf sunar. System.Collections namespace’in altında bulunan bu sınıflar, ArrayList, HashTable, SortedList, Queue, Stack ve BitArray dır. Koleksiyonlar, Array kullanımına göre daha esnek ve dinamik bir yapıya sahiptir.
ArrayList, Array ve koleksiyon sınıflarının bileşimi gibi tanımlanabilir. Eleman ekleme ve işlemlerinde kolaylık sağlar. Index yöntemiyle elemanlara erişir.
HashTable, index yöntemi yerine key-value mantığını kullanılır. Her elemanın tekil bir key değeri vardır ve elemanlara erişilirken bu key değeri kullanılır.
SortedList, HashTable gibi key-value mantığını kullanır. En büyük avantajı dizinin her zaman sıralı olmasıdır. Eleman eklendikçe SortedList, elemanları yeniden sıralayıp diziyi ÅŸekillendirir. Bu da bazen performans kaybına neden olabilir. Bu yüzden belki de dışardan bir dizi oluÅŸturup bir kere de SortedList’in içine atmak daha uygun düşecektir.
Stack, “son giren ilk çıkar”(LIFO) prensibine dayanan bir nesne depolayıcısı olup eleman ekleme ve çıkarma listenin üst kısmından yapılır. Bunun en güzel örneÄŸi üst üste konulmuÅŸ tabaklardır. İhtiyaç duyuldukça yığından alınacak tabak, en üstteki yani en son konulmuÅŸ tabak olacaktır.
Queue, Stack’in tersi olup “ilk giren ilk çıkar”(FIFO) prensibine göre çalışır. Eleman eklemeleri sondan, çıkarmaları ise baÅŸtan yapılır. Bilet kuyruÄŸu, buna örnek olarak gösterilebilir. Bilet alma sırası her zaman kuyruÄŸun başındaki kiÅŸiye aittir.
BitArray, nesneler yerine Boolean türündeki bit değerlerini depolamak için kullanılan bir veri yapısıdır.
CollectionBase & DictionaryBase Sınıfları
Yukarıda özet verdiÄŸimiz koleksiyon sınıflarda Object türünde her nesneyi depolayabiliyoruz. Bazı durumlarda koleksiyon nesnesinin sadece bizim belirlediÄŸimiz türdeki nesneleri barındırmasını isteriz. Bu durumda koleksiyonun, tip güvenliÄŸini(type-safe) desteklemesi gerekir. .NET 2.0 bu iÅŸlemi, generic denilen özel tanımlama biçimleriyle halletmektedir. .NET’in daha önceki sürümlerinde bu tür iÅŸlemleri destekleyen temel koleksiyonlar olan CollectionBase & DictionaryBase sınıfları kullanılmaktaydı. Bu sınıflar, tiplendirilmiÅŸ koleksiyon nesneler(strongly-typed collection) için temel teÅŸkil eden abstract (VB.NET’te MustInherit) classlardır. Abstract bir class olması, kendisinden doÄŸrudan bir nesne oluÅŸturulamayacağını anlamına gelir.
ArrayList gibi koleksiyonları oluşturmak için IEnumerable, ICollection ve IList arabirimlerini implement etmiş CollectionBase sınıfı, HashTable gibi key-value düzenini barındıran koleksiyonları oluşturmak için de IDictionary, ICollection ve IEnumerable arabirimlerini implement etmiş DictionaryBase sınıfı temel alınır.
Sonraki yazıda .NET 2.0 ile birlikte tip güvenliğini sağlamak amacıyla geliştirilmiş Generic türünü işleyeceğimiz için burada CollectionBase ve DictionaryBase sınıflarını detaylandırmayacağız.




Recent Comments