Yükleniyor...

Koleksiyonlar

C#’ta koleksiyonlar, birden fazla nesneyi yönetmek ve organize etmek için kullanılan dinamik veri yapılarıdır. Koleksiyonlar, dizilerden farklı olarak boyutları esnektir ve ekleme, silme, arama gibi işlemleri optimize edilmiş yöntemlerle sunar. Yazılım geliştirmede verilerin yönetimi ve işlenmesi açısından koleksiyonlar kritik bir öneme sahiptir; özellikle büyük veri kümeleri, kullanıcı girdileri veya dinamik içerik ile çalışırken performansı ve kod okunabilirliğini artırır.
C# koleksiyonları, List, Dictionary, HashSet, Queue ve Stack gibi yapıları içerir. List, sıralı veri saklamak için uygundur; Dictionary, anahtar-değer çiftlerini depolayarak hızlı erişim sağlar; HashSet, benzersiz öğeler oluşturmak için idealdir; Queue ve Stack ise sırasıyla FIFO ve LIFO mantığını uygular. Koleksiyonlar, nesne yönelimli programlamanın (OOP) temel prensipleriyle entegre çalışarak encapsulation, polymorphism ve abstraction gibi kavramları destekler.
Bu eğitimde, koleksiyonların nasıl oluşturulacağını, eleman ekleme, silme, arama ve gezinme yöntemlerini, hata yönetimini, performans optimizasyonlarını ve en iyi uygulamaları öğreneceksiniz. Öğrenilen bilgiler, C# projelerinde veri yönetimini daha verimli ve güvenli hale getirecek, doğru koleksiyon seçimi ile uygulamaların ölçeklenebilirliğini ve bakımını kolaylaştıracaktır.

Temel Örnek

text
TEXT Code
using System;
using System.Collections.Generic;

namespace KoleksiyonlarExample
{
class Program
{
static void Main(string\[] args)
{
// Dinamik bir tamsayı listesi oluşturma
List<int> sayilar = new List<int>();

// Eleman ekleme
sayilar.Add(5);
sayilar.Add(10);
sayilar.Add(15);

// Elemanları yazdırma
Console.WriteLine("Liste Elemanları:");
foreach (int s in sayilar)
{
Console.WriteLine(s);
}

// Eleman kontrolü
if (sayilar.Contains(10))
Console.WriteLine("Liste 10 değerini içeriyor.");

// Eleman silme
sayilar.Remove(5);
Console.WriteLine("5 değeri silindikten sonra:");
sayilar.ForEach(n => Console.WriteLine(n));
}
}

}

Bu örnekte List kullanılarak dinamik bir tamsayı listesi oluşturulmuştur. Add(), Remove() ve Contains() metodları, eleman ekleme, silme ve kontrol etme işlemlerini gösterir. foreach döngüsü, listenin güvenli bir şekilde dolaşılmasını sağlar; ForEach metodu lambda ifadeleriyle daha okunabilir bir çıktı sağlar.
Generics kullanımı, tür güvenliğini sağlar ve runtime hatalarını önler. List, sıralı veri saklama gereksinimlerinde idealdir ve bu temel yapı, daha karmaşık koleksiyon tiplerini ve uygulamalarda performans odaklı veri yönetimini anlamak için başlangıç noktasıdır.

Pratik Örnek

text
TEXT Code
using System;
using System.Collections.Generic;

namespace KoleksiyonlarPratik
{
class Urun
{
public int Id { get; set; }
public string Ad { get; set; }
public double Fiyat { get; set; }
}

class Program
{
static void Main(string[] args)
{
// Dictionary kullanarak ürün koleksiyonu oluşturma
Dictionary<int, Urun> urunler = new Dictionary<int, Urun>();

// Ürün ekleme
urunler.Add(1, new Urun { Id = 1, Ad = "Laptop", Fiyat = 5000 });
urunler.Add(2, new Urun { Id = 2, Ad = "Mouse", Fiyat = 200 });
urunler.Add(3, new Urun { Id = 3, Ad = "Klavye", Fiyat = 350 });

// Fiyatı 300'den büyük ürünleri yazdırma
Console.WriteLine("Fiyatı 300'den büyük ürünler:");
foreach (var urun in urunler.Values)
{
if (urun.Fiyat > 300)
Console.WriteLine($"{urun.Ad} - Fiyat: {urun.Fiyat}");
}

// Hata yönetimi: aynı anahtar ekleme
try
{
urunler.Add(2, new Urun { Id = 2, Ad = "Monitor", Fiyat = 1200 });
}
catch (ArgumentException ex)
{
Console.WriteLine("Hata: Aynı anahtar tekrar eklenemez. " + ex.Message);
}
}
}

}

Bu örnekte Dictionary\ kullanılarak nesne koleksiyonlarıyla çalışmanın temelleri gösterilmiştir. Values özelliği, koleksiyonun değerlerine erişim sağlar ve try-catch bloğu, anahtar çakışmalarını yönetir. Bu yöntem, stok yönetimi, ürün katalogları ve hızlı veri erişimi gereken senaryolarda performans ve güvenlik sağlar.
Generics ve OOP kullanımı, koleksiyonları daha güvenli, ölçeklenebilir ve bakımı kolay hale getirir. Doğru koleksiyon seçimi, yazılımın hem performansını hem de veri bütünlüğünü doğrudan etkiler.

Koleksiyonlarla çalışırken en iyi uygulamalar, senaryoya uygun koleksiyon seçmek, foreach veya LINQ ile veri gezinmek, hataları doğru yönetmek ve gereksiz kopyalamalardan kaçınmaktır. Yaygın hatalar, List ile sık arama yapmak, Dictionary’de tekrar eden anahtar eklemek ve bellek tüketimini dikkate almamaktır. Koleksiyonlar için C# özelinde debug araçları kullanmak ve optimize edilmiş veri yapıları seçmek, performans ve güvenlik için kritik öneme sahiptir.

📊 Referans Tablosu

C# Element/Concept Description Usage Example
List<T> Dinamik ve sıralı eleman listesi List<int> sayilar = new List<int>();
Dictionary\<TKey, TValue> Anahtar-değer çiftleri Dictionary\<int, string> sozluk = new Dictionary\<int, string>();
HashSet<T> Benzersiz eleman kümesi HashSet<string> isimler = new HashSet<string>();
Queue<T> FIFO (ilk giren, ilk çıkar) yapısı Queue<int> kuyruk = new Queue<int>();
Stack<T> LIFO (son giren, ilk çıkar) yapısı Stack<int> yigin = new Stack<int>();

Koleksiyonları öğrenmek, C#’ta veri yapıları, algoritmalar ve OOP prensiplerini anlamayı güçlendirir. Gelecek adımlar arasında LINQ, thread-safe koleksiyonlar ve tasarım desenlerini incelemek yer alır. Koleksiyonlar, envanter yönetimi, veri önbellekleme ve büyük veri işlemlerinde projelerde kritik öneme sahiptir. Resmi dokümantasyon ve topluluk kaynakları, sürekli öğrenme ve ileri seviye uygulamalar için değerli referanslardır.

🧠 Bilginizi Test Edin

Başlamaya Hazır

Bilginizi Test Edin

Bu konudaki anlayışınızı pratik sorularla test edin.

4
Sorular
🎯
70%
Geçmek İçin
♾️
Süre
🔄
Deneme

📝 Talimatlar

  • Her soruyu dikkatle okuyun
  • Her soru için en iyi cevabı seçin
  • Quiz'i istediğiniz kadar tekrar alabilirsiniz
  • İlerlemeniz üstte gösterilecek