Altbilgi içeriğine atla
Iron Academy Logo
C# Öğrenin
C# Öğrenin

Diğer Kategoriler

C# Sözlüğünü Anlama

Tim Corey
10m 19s

C#'ta sıkça az kullanılan güçlü bir veri yapısı da sözlüktür. Dictionary sınıfı, System.Collections.Generic isim alanında bulunan bir genel koleksiyondur. C#'ta Sözlük Veri Yapısı 10 Dakikadan Daha Kısa Sürede adlı videosunda, Tim Corey, C# uygulamalarınızda sözlükleri etkili bir şekilde kullanmak için kısa ve pratik bir kılavuz sunar. Bu makale, Tim'in açıklamalarını ve örneklerini parçalara ayırarak, C# sözlüğünün temel kavramlarını kolayca kavramanıza yardımcı olmayı hedefler.

Sözlüklere Giriş

Tim, C#'ta bir sözlüğün kavramını tanıtmakla başlar. Bunu, bir kelimeyi (anahtar) tanımını bulmak için aradığınız gerçek hayatta bir sözlüğe benzetir. C#'ta bir sözlük, her bir anahtarın benzersiz olduğu ve null olamayacağı anahtar-değer çiftlerinin bir koleksiyonudur.

Bir Sözlük Oluşturma

C#'ta bir sözlük, anahtar-değer çiftleri aracılığıyla verimli veri depolama ve geri çağırmayı sağlayan Dictionary<TKey, TValue> sözdizimi kullanılarak declare edilir. Oluşturulması sırasında ayarlanan varsayılan başlangıç kapasitesiyle, sözlükler elemanlar eklendikçe dinamik olarak ayarlanabilir.

(0:28) de, Tim basit bir konsol uygulaması ile bir sözlük oluşturmayı gösterir. Anahtarlar olarak tamsayıları ve değerler olarak stringleri başlangıç için şu kodu kullanır:

// Declare a dictionary with integer keys and string values
Dictionary<int, string> rookieOfTheYear = new Dictionary<int, string>();
// Declare a dictionary with integer keys and string values
Dictionary<int, string> rookieOfTheYear = new Dictionary<int, string>();

Burada, Dictionary<int, string> anahtarların tamsayı (int) ve değerlerin string (string) olacağını belirtir. rookieOfTheYear değişkeni sözlük örneğinin adıdır. Anahtar türünü string olarak ayarlayarak string anahtarlar da kullanabilirsiniz.

Bir Sözlüğe Eleman Ekleme

Tim şimdi (2:08) de sözlüğe eleman ekler. Anahtar-değer çiftleri eklemek için Add metodunun nasıl kullanılacağını gösterir:

// Add entries to the dictionary
rookieOfTheYear.Add(2000, "Mike Miller");
rookieOfTheYear.Add(2001, "Jane Doe");
rookieOfTheYear.Add(2002, "Jane Doe");
rookieOfTheYear.Add(2003, "John Smith");
// Add entries to the dictionary
rookieOfTheYear.Add(2000, "Mike Miller");
rookieOfTheYear.Add(2001, "Jane Doe");
rookieOfTheYear.Add(2002, "Jane Doe");
rookieOfTheYear.Add(2003, "John Smith");

Bu örnekte:

  • rookieOfTheYear.Add(2000, "Mike Miller") belirli anahtar 2000 ile değer "Mike Miller" ekler.

  • Benzer şekilde, anahtarlar 2001, 2002 ve 2003 sırasıyla "Jane Doe", "Jane Doe" ve "John Smith" ile ilişkilendirilmiştir.

Değerlerin tekrar edilebileceğini ancak anahtarların benzersiz olması gerektiğini belirtir. Tekrar eden bir anahtar eklenmeye çalışıldığında bir istisna oluşur:

rookieOfTheYear.Add(2001, "Jane Doe"); // This will throw an exception
rookieOfTheYear.Add(2001, "Jane Doe"); // This will throw an exception

Bu istisna, 2001 anahtarının sözlükte zaten var olması nedeniyle oluşur.

Sözlük Elemanlarına Erişim

Değer geri çağırma işlemini göstermek için, Tim (3:45) de şu kod satırını kullanır:

// Accessing a value with a specific key
Console.WriteLine(rookieOfTheYear[2002]); // Outputs: Jane Doe
// Accessing a value with a specific key
Console.WriteLine(rookieOfTheYear[2002]); // Outputs: Jane Doe

Burada, rookieOfTheYear[2002], 2002 anahtarıyla ilişkili değere erişir. Bu, anahtarlara dayalı değerleri aramanın çok verimli bir yoludur.

Understanding C# Dictionary

Anahtarın Var Olup Olmadığını Kontrol Etme

(4:29) de, Tim ContainsKey metodu kullanılarak sözlükte bir anahtarın var olup olmadığını kontrol etmenin yollarını tartışır:

// Check if a key exists before accessing its value
if (rookieOfTheYear.ContainsKey(2002))
{
    Console.WriteLine(rookieOfTheYear[2002]);
}
// Check if a key exists before accessing its value
if (rookieOfTheYear.ContainsKey(2002))
{
    Console.WriteLine(rookieOfTheYear[2002]);
}

Yukarıdaki örnekte, ContainsKey(2002), 2002 anahtarının sözlükte var olup olmadığını kontrol eder. Eğer varsa, ilgili değer ("Jane Doe") yazdırılır.

Eğer anahtar yoksa, sözlük hiçbir çıktı vermez, böylece olmayan anahtarlara erişimden kaynaklanan hataları önler.

Sözlüğün Yeteneklerini Genişletme

(5:33) de Tim, bozuk dizileri liste dizgelerine haritalayan daha karmaşık bir örnek yaratarak sözlüğün yeteneklerini genişletir:

// Declare a dictionary with string keys and List<string> as values
Dictionary<string, List<string>> wishList = new();

// Add entries to the dictionary with lists as values
wishList.Add("Tim Corey", new List<string> { "Xbox", "Tesla", "Pizza" });
wishList.Add("Billy Bob", new List<string> { "PS5", "Ford", "Hoagie" });
wishList.Add("Mary Jane", new List<string> { "House", "Car", "Sub" });
// Declare a dictionary with string keys and List<string> as values
Dictionary<string, List<string>> wishList = new();

// Add entries to the dictionary with lists as values
wishList.Add("Tim Corey", new List<string> { "Xbox", "Tesla", "Pizza" });
wishList.Add("Billy Bob", new List<string> { "PS5", "Ford", "Hoagie" });
wishList.Add("Mary Jane", new List<string> { "House", "Car", "Sub" });

Burada:

  • Anahtarlar stringtir (örneğin, "Tim Corey", "Billy Bob", "Mary Jane").

  • Değerler, her kişi için istek listesi temsil eden stringlerin listeleridir.

Bir Sözlük Üzerinde Dolaşım

(7:24) de Tim, foreach döngüsü kullanarak bir sözlük üzerinde nasıl dolaşım yapılacağını gösterir:

// Iterate over each key-value pair in the dictionary
foreach (var (key, value) in wishList)
{
    Console.WriteLine($"{key}'s wish list:");
    // Iterate over each item in the list of values
    foreach (var item in value)
    {
        Console.WriteLine($"\t{item}");
    }
}
// Iterate over each key-value pair in the dictionary
foreach (var (key, value) in wishList)
{
    Console.WriteLine($"{key}'s wish list:");
    // Iterate over each item in the list of values
    foreach (var item in value)
    {
        Console.WriteLine($"\t{item}");
    }
}

Bu örnekte:

  • foreach (var (key, value) in wishList), wishList sözlüğündeki her anahtar-değer çifti üzerinde döner.

  • key, anahtarı ifade eder (örneğin, "Tim Corey").

  • value, o anahtarla ilişkili değerler listesini ifade eder.

  • İç döngü listedeki her öğeyi dolaşır ve yazdırır.

Bu, belirli bir anahtar ve onunla ilişkili belirli değerleri kullanarak sözlük elemanlarına birer birer erişmek ve döngü kullanarak tüm elemanları yazdırmak için izin verir. İşte çıktı:

Understanding C# Dictionary

Daha Karmaşık Değerlere Erişim

Tim ayrıca (8:26) de belirtilen indeksi kullanarak sözlükteki daha karmaşık değerlere nasıl erişileceğini gösterir:

// Access the first item in the list of values for the specified key
Console.WriteLine(wishList["Tim Corey"][0]); // Outputs: Xbox
// Access the first item in the list of values for the specified key
Console.WriteLine(wishList["Tim Corey"][0]); // Outputs: Xbox

Burada, wishList["Tim Corey"], "Tim Corey" anahtarıyla ilişkili listeye erişir ve [0] o listedeki ilk öğeyi alır.

Sonuç

(9:00) de Tim, sözlüklerin önemini anlamanın gerekliliğini vurgulayarak sonlandırır. Sözlüklerin sık kullanılmasa da benzersiz anahtarlar gerektiren ve verimli aramalar yapan senaryolar için son derece yararlı olduğunu belirtir.

Anahtar Çıkarımlar

  • Sözlük Oluşturma: Çeşitli veri türleriyle sözlükleri nasıl başlatacağınızı anlayın.

  • Eleman Ekleme: Benzersiz anahtarların önemini öğrenin ve tekrar eden anahtar istisnaları nasıl ele alınacağı konusunda bilgi edinin.

  • Değerlere Erişim: Anahtarları kullanarak değerleri verimli bir şekilde geri alın.

  • Anahtarın Var Olup Olmadığını Kontrol Etme: Değerlere erişmeden önce anahtarın varlığını kontrol ederek hataları önleyin.

  • İleri Düzey Kullanım: Değer olarak listeye sahip daha karmaşık sözlükler uygulayın.

  • Dolaşım: Bir döngü kullanarak bir sözlükteki tüm elemanlara erişin ve görüntüleyin.

Tim Corey'nin videosunu takip ederek, C#'ta sözlüklerin kullanımını ustalaşabilir, verimli veri geri çağırma ve depolama gerektiren senaryolar için programlama araç setinizi geliştirebilirsiniz. C# hakkında daha fazla bilgilendirici video için Tim'in kanalına göz atın.

Hero Worlddot related to C# Sözlüğünü Anlama
Hero Affiliate related to C# Sözlüğünü Anlama

Sevdiğiniz Şeyleri Paylaşarak Daha Fazla Kazanın

.NET, C#, Java, Python veya Node.js üzerinde çalışan geliştiriciler için içerik oluşturuyor musunuz? Uzmanlığınızı ek gelire dönüştürün!

Iron Destek Ekibi

Haftanın 5 günü, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara