C# (C Sharp) Ders 7 – Koleksiyonlar (Collections)

Koleksiyonlar (Collections), dizilerde (arrays) olduğu gibi birden fazla verinin tutulduğu veri yapılarıdır. Diziler, eleman sayısının sabit olduğu durumlarda kullanılmaktadır, fakat esnekliğe ihtiyaç duyulduğunda Koleksiyonlar kullanılır. Dizilerin aksine koleksiyonların boyutu dinamik olarak azalıp artabilir. Farklı durumlardaki farklı ihtiyaçları karşılamak için koleksiyon türünde birçok veri yapısı geliştirilmiştir. List, Dictionary, HashSet, Queue ve Stack gibi koleksiyon sınıfları bulunmaktadır.

Dizilerin Sınırlılıkları

  • Sabit boyut: Sonradan değiştirilemedikleri için dizilerin boyutları önceden belirlenmelidir.
  • Veri türü kısıtlaması: Bir dizi sadece belirtilen türdeki verileri saklayabilir. Aynı anda birden fazla türdeki verileri saklayamaz.

Koleksiyonların Avantajları

  • Dinamik boyutlandırma: Koleksiyonlar, ihtiyaç duyulduğunda boyutlarını otomatik olarak ayarlayabilirler. Bu sayede, veri kümesi büyüklüğünün önceden bilinmesine gerek yoktur.
  • Esneklik: Koleksiyonlar, farklı türlerdeki verileri birlikte saklayabilirler.
  • Hazır metotlar: Koleksiyon sınıfları eleman ekleme, çıkarma, arama, sıralama gibi birçok yaygın işlem için hazır metotlar sunar. Böylece, kod yazma süresi kısalabilir ve kodları daha okunaklı yazmak mümkün olmaktadır.
  • Tip Güvenliği: Generic koleksiyonlar sayesinde derleme zamanında tip güvenliği sağlanır. Bu sayede, çalışma zamanı hataları engellenebilir.

C# Koleksiyon Türlerine Genel Bakış

  • List<T>: Sıralı bir şekilde eleman saklayan dinamik boyutlu bir koleksiyondur.
  • Dictionary<TKey, TValue>: Anahtar-değer çiftleri şeklinde eleman saklayan bir koleksiyondur.
  • HashSet<T>: Tekil (benzersiz) elemanlar saklayan bir koleksiyondur.
  • Queue<T>: FIFO (First In, First Out – İlk Giren İlk Çıkar) prensibiyle çalışan bir koleksiyondur.
  • Stack<T>: LIFO (Last In, First Out – Son Giren İlk Çıkar) prensibiyle çalışan bir koleksiyondur.

Bu koleksiyonlar System.Collections, System.Collections.Generic ve System.Linq gibi isim alanları (namespace) altında gruplandırılırlar.

Kaynak: https://learn.microsoft.com/tr-tr/dotnet/csharp/tour-of-csharp/tutorials/