Son Haberler
Anasayfa / Yazılım / C# / Generic Type Collections – Generic Tipinde Koleksiyonlar

Generic Type Collections – Generic Tipinde Koleksiyonlar

.NET 2.0?dan sonra son yazılarımda bahsettiğim tipik koleksiyon sınıfları yerini şablon tipli yani generic type koleksiyon sınıflarına bıraktı. Klasik tipli koleksiyon sınıfları içerisine aldıkları elemanların hepsini object türünde saklar. Ve bu durum performans kaybına sebep olur, çünkü boxing ve unboxing işlemleri yapılmaktadır, boxing ve unboxing işlemleri için tür dönüşümlerini incelemenizi öneririm. Performans kaybının yanı sıra aynı zamanda tür güvenliği (type safety) ‘de klasik tip koleksiyonlarda söz konusu değildir. .NET 2.0 ile birlikte System.Collections.Generic isim alanında bütün koleksiyonların Generic tipli versiyonları mevcuttur. Bu sayede generic koleksiyonlar ile performans daha da arttırılmış ve tür güvenliği de sağlanmıştır.

Peki nedir bu Generic koleksiyonlar, niçin kullanılmalıdır? Bunu daha da açalım.

Örnek olarak ben bir ArrayList gibi klasik bir koleksiyon sınıfından bir dizi oluşturduğumda bu diziye eklenen nesnelerin hepsi object türünde olacaktır. Yani bu diziye string, int, double, float, char vs türünde elemanlar ekleyebiliyorum. Daha somut bir örnek vermem gerekir ise sadece ad soyad gibi string verilerin olması gereken dinamik bir dizi yapısında sayısal verilerin olmasını istemem değil mi? Ya da tam tersi, fiyat bilgileri tutan bir dinamik dizi yapım için dışarıdan string olarak ?abc? gibi bir fiyat bilgisi girilmesini istemem değil mi? Bu soruların cevabı tabii ki evet. Yani burdan tekrar anlıyoruz ki, benim klasik koleksiyon sınıflarımda tip güvenliği yok!!

Bununla birlikte diğer dezavantaj ise şu, diziye eklenen bir nesnenin ?ki bu nesne hele ki değer tipinde ise- add metodu ile dizime bu nesneyi eklediğimde yapılan unboxing işlemi. Bu işlem ile veriyi alırken gereksiz yere unboxing işlemleri de olabileceğinden performans kaybı yaşanacaktır.
İşte tüm bu dezavantajlar nedeni ile .NET 2.0 ile ve sonrasında klasik koleksiyonların yerini Generic tipinde koleksiyon sınıfları almıştır.

Bu arada onca son 4-5 yazı neden yazıldı diye sormak isteyenlere hemen açıklama yapalım, emeklemeden koşmamak gerek.. 🙂

Şimdi örnek olarak tanımlama şekli görelim ve bu kadar diyelim.

 

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir