CodeBlanks Logo Icon CodeBlanks

Dictionary erişimi

C# kursu · Başlangıç · Ders 68/116

TryGetValue ve ContainsKey ile güvenli erişim öğrenirsin.

TryGetValue

Bir sözlükte olmayan anahtara indeksleyici ile erişersen KeyNotFoundException fırlar. Bunu önlemek için TryGetValue kullanılır: hem varlık kontrolü hem değer erişimini tek çağrıda yapar.

Çağrı ages.TryGetValue("Alex", out int val) biçimindedir. Anahtar varsa yöntem true döner ve val değeri alır; yoksa false döner ve val türün varsayılan değeri olur.

ContainsKey

Yalnızca anahtarın varlığını kontrol etmek istiyorsan ContainsKey kullanılır: ages.ContainsKey("Ayşe") çağrısı bool döner. TryGetValue ile hem kontrolü hem erişimi birlikte yapabildiğin için çoğu durumda ContainsKey'e gerek kalmaz.

Yine de ContainsKey, değere ihtiyaç duymadan yalnızca varlık kontrolü yapılacağı zaman okunaklı bir seçenektir.

Uygulama TryGetValue ile güvenli erişim

Dictionary<string, int> ages = new Dictionary<string, int>(); tanımla. Add ile "Ayşe" anahtarına 30 ekle. Sonra ages.TryGetValue("Mehmet", out int val) çağrısıyla "Mehmet" anahtarını ara; ok değişkenine ata. Son olarak ok'yu Console.WriteLine ile yazdır.

Örnek çözümü göster
ages.Add("Ayşe", 30); ile ekle, sonra bool ok = ages.TryGetValue("Mehmet", out int val); ile dene, son olarak Console.WriteLine(ok); ile yazdır.
Örnek çözüm:
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        // TryGetValue ile Mehmet'i ara ve sonucu yazdır
        Dictionary<string, int> ages = new Dictionary<string, int>();
        ages.Add("Ayşe", 30);
        bool ok = ages.TryGetValue("Mehmet", out int val);
        Console.WriteLine(ok);
    }
}

Kendini test et

  1. Olmayan anahtar için TryGetValue çıktısı nedir?

    Dictionary<string, int> ages = new Dictionary<string, int>();
    ages.Add("Ayşe", 30);
    int val;
    bool ok = ages.TryGetValue("Alex", out val);
    Console.WriteLine(ok);
    • true
    • 30
    • 0
    • false
    Cevabı göster

    false — Doğru. "Alex" sözlükte yok; TryGetValue false döner.

  2. İfadeyi anlamına eşle

    TryGetValue
    Güvenli erişim
    ContainsKey
    Anahtar var mı
    dict[key]
    Hataya yol açabilir
    out val
    Çıktı parametresi
  3. ContainsKey çağrısı

    Dictionary<string, int> ages = new Dictionary<string, int>();
    ages.Add("Ayşe", 30);
    bool has = ____;
    Console.WriteLine(has);
    Cevabı göster
    Dictionary<string, int> ages = new Dictionary<string, int>();
    ages.Add("Ayşe", 30);
    bool has = ages.ContainsKey("Ayşe");
    Console.WriteLine(has);

Başlangıç bölümündeki tüm dersler