C# Generic Collections

Merhaba arkadaşlar,

Bu yazımda Şablon Tipli Koleksiyon Nesneleri (Generics) hakkında bahsedip her bir koleksiyon nesnesinin bize sunduğu çeşitli özelliklerini inceleyeceğiz. Klasik tipli koleksiyon nesnelerini kullanarak grup nesnelerimizi yöneterek her bir klasik tipli koleksiyon nesnelerini çalışma prensiplerine göre ele almaya çalıştık. Ancak klasik tipli koleksiyon nesneleri object veri tipini kullandıkları için bu hem performans kaybına yaşanıyordu hem de tür güvenliğini sağlanamıyordu. Buna çözüm olarak System.Collection.Generic isim alanında her bir klasik tipli koleksiyon sınıfının şablon tipli versiyonu geliştirilmiştir.

System.Collection.Generic isim alanına genel bakış

C# 2.0 ile birlikte eklenen yeni şablon tipli özelliği sayesinde klasik tipli koleksiyon nesnelerin kullanılması önerilmiyor. Biz de klasik tipli koleksiyon nesnelerini işin mutfağında neler dönüyor ele almıştık. 🙂 System.Collection isim alanında bulunan arayüz ve koleksiyon tabanlı sınıflar ile ilgili serime buradan ulaşabilirsiniz.

Şablon tipli yeni koleksiyonların kullanımı ve amaçları klasik koleksiyonlarla aynıdır. Tek farkları saklanacak veri tiplerinin tek olması ve Koleksiyon yaratıldığı anda belirlenmesi.

List<T> Class

List<T> koleksiyonu ArrayList koleksiyonun karşılığıdır. List koleksiyondaki her bir elemana sıfır tabanlı indeks ile erişe bilmemize olanak sağlayan sınıftır. Hemen hemen birçok özelliği aynıdır. C# ArrayList Class yazıma buradan ulaşabilirsiniz.

List<T> sınıfının diğer metot ve özelliklerine buradan daha detaylı bir şekilde ulaşabilirsiniz.

Dictionary<TKey, TValue> Class

Dictionary<TKey, TValue> koleksiyonu Hashtable koleksiyonunun karşılığıdır. Dictionary anahtar-değer ikilisine sahip koleksiyon tabanlı bir sınıftır. Hemen hemen bir çok özelliği aynıdır. C# Hashtable Class yazıma buradan ulaşabilirsiniz.

Dictionary<TKey, TValue> sınıfının diğer metot ve özelliklerine buradan daha detaylı bir şekilde ulaşabilirsiniz.

SortedDictionary<TKey, TValue> Class

SortedDictionary<TKey, TValue> koleksiyonu SortedList koleksiyonunun karşılığıdır. Bu sınıf hem ArrayList hem de Hashtable sınıflarının karışımı gibidir. Hemen hemen bir çok özelliği aynıdır. C# SortedList Class yazıma buradan ulaşabilirsiniz.

SortedDictionary<TKey, TValue> sınıfının diğer metot ve özelliklerine buradan daha detaylı bir şekilde ulaşabilirsiniz.

IEnumerable<T> ve IEnumerator<T> Intefaces

IEnumerable<T> ve IEnumerator<T> arayüzleri klasik versiyonlarından (IEnumerable, IEnumerator) türetilmiştir. IEnumerable foreach yapısı için uyguladığımız bir arayüz, IEnumerator arayüzü ise listedeki her bir elemana erişmek ve diğer işlemleri yapmak için uyguladığımız arayüzdü. Hatırlamak için C# SortedList Class yazıma buradan ulaşabilirsiniz.

Şablon türlü koleksiyonlar için arayüz niteliğindedir. Kendi koleksiyon sınıflarımızı geliştirirken artık bu arayüzü uygulamamız gerekiyor. Yazımın başında şablon tipli koleksiyonlar dile eklendikten sonra klasik koleksiyon sınıflarının kullanılması önerilmiyor.

Eski arayüzler hayatlarına devam edeceklerdir. Buda geriye dönük uyumluluk içindir.

String değerleri barındıran basit bir koleksiyon sınıfı tasarlayacağız. Bu sınıfa şablon tipli IEnumerable<string> arayüzünü uygulayıp ve IEnumerator<string> arayüzünü bildireceğiz.

IEnumerable<T> sınıfının diğer metot ve özelliklerine buradan daha detaylı bir şekilde ulaşabilirsiniz.

IEnumerator<T> sınıfının diğer metot ve özelliklerine buradan daha detaylı bir şekilde ulaşabilirsiniz.

Queue<T> Class

Queueu<T> koleksiyonu klasik Queue koleksiyonunun karşılığıdır. Queue kuyruktur ve art arda oluşan sıralı dizidir. Hemen hemen birçok özelliği aynıdır. C# Queue Class yazıma buradan ulaşabilirsiniz.

Queue koleksiyonu FIFO mantığı ile çalışır. FIFO ise (First in First out) koleksiyona ilk giren eleman ilk çıkar prensibini uygular.

Queue<T> sınıfının diğer metot ve özelliklerine buradan daha detaylı bir şekilde ulaşabilirsiniz.

Stack<T> Class

Stack<T> koleksiyonu klasik Stack koleksiyonunun karşılığıdır. Stack bir yığındır ve bir şeyin üst üste birikmesiyle oluşan kümedir. Hemen hemen birçok özelliği aynıdır. C# Stack Class yazıma buradan ulaşabilirsiniz.

Stack koleksiyonu LIFO mantığı ile çalışır. LIFO ise (Last in First out) koleksiyona son giren eleman ilk çıkar prensibini uygular.

Stack<T> sınıfının diğer metot ve özelliklerine buradan daha detaylı bir şekilde ulaşabilirsiniz.

LinkedList<T> Class

LinkedList<T> koleksiyonu .Net 2.0 ile birlikte koleksiyon elemanlarını zincir gibi tutabileceğimiz bir koleksiyon sınıfıdır. LinkedList veri yapısını, türlerini ve çalışma prensibini C# LinkedList yazımdan ulaşabilirsiniz.

LinkedList<T> sınıfının diğer metot ve özelliklerine buradan daha detaylı bir şekilde ulaşabilirsiniz.

Bu yazımda Şablon Tipli Koleksiyon nesneleri daha yakından tanımış olduk. Şablon Tipli Koleksiyon Nesneleri hakkında edindiğim bilgileri paylaşmaya çalıştım. Umarım faydalı olmuştur 🙂

Bir sonraki yazımda (yield) Iterasyon Tekniği hakkında edindiğim bilgileri paylaşmaya çalışacağım. Görüşmek üzere 🙂

Kaynaklar:

Her Yönüyle C# 7.0, Sefer Algan, Pusula Yayincilik

https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic?view=netframework-4.8

Leave a Comment