Sobes.tech
Junior

C# da lug'atda kalit bo'yicha qiymatni qanday olish mumkin?

sobes.tech AI

AIdan javob

Kalit bilan indeksator yoki TryGetValue metodidan foydalanish mumkin.

  1. Indeksator ([kalit]):

    • Belgilangan kalit uchun qiymatni qaytaradi.
    • Agar kalit mavjud bo'lmasa, KeyNotFoundException tashlaydi.
    // Indeksatordan foydalanish misoli
    Dictionary<string, int> yoshlar = new Dictionary<string, int>();
    yoshlar["Alice"] = 30;
    
    int AliceYoshi = yoshlar["Alice"]; // Qiymatni olamiz
    
    // yoshlar["Bob"]; // "Bob" kaliti mavjud bo'lmasa, KeyNotFoundException tashlaydi
    
  2. TryGetValue(kalit, out qiymat) metodi:

    • Belgilangan kalit uchun qiymatni topishga harakat qiladi.
    • Agar kalit topilsa, true qaytaradi va qiymatni qiymat o'zgaruvchisiga tayinlaydi.
    • Agar kalit topilmasa, false qaytaradi va qiymat standart qiymatga ega bo'ladi.
    • Potensial ravishda mavjud bo'lmagan kalitlar bilan ishlashda xavfsizroq.
    // TryGetValue dan foydalanish misoli
    Dictionary<string, int> yoshlar = new Dictionary<string, int>();
    yoshlar["Alice"] = 30;
    
    int AliceYoshi;
    if (yoshlar.TryGetValue("Alice", out AliceYoshi))
    {
        // "Alice" kaliti topildi, AliceYoshi 30
        // ... foydalanamiz
    }
    
    int BobYoshi;
    if (yoshlar.TryGetValue("Bob", out BobYoshi))
    {
        // Bu blok ishlamaydi, chunki "Bob" kaliti mavjud emas
    }
    else
    {
        // "Bob" kaliti topilmadi, BobYoshi 0 (standart qiymat)
    }
    

Shuningdek, GetValueOrDefault(kalit) metodidan foydalanish mumkin ( .NET Core 2.1+ va .NET Standard 2.1+ ), bu kalit uchun qiymatni yoki standart qiymatni qaytaradi, agar kalit topilmasa.

// GetValueOrDefault dan foydalanish misoli
Dictionary<string, int> yoshlar = new Dictionary<string, int>();
yoshlar["Alice"] = 30;

int AliceYoshi = yoshlar.GetValueOrDefault("Alice"); // 30
int BobYoshi = yoshlar.GetValueOrDefault("Bob");     // 0 (standart qiymat)