Sobes.tech
Junior

C#'та сөздүктө ачкыч боюнча маанини кантип алуу керек?

sobes.tech AI

AIден жооп

Ключ менен индексаторду же TryGetValue ыкмасын колдонсо болот.

  1. Индексатор ([key]):

    • белгилүү бир ачкыч боюнча маанини кайтарат.
    • ачкыч жок болсо KeyNotFoundException чыгарат.
    // Индексаторду колдонуу мисалы
    Dictionary<string, int> жаштар = new Dictionary<string, int>();
    жаштар["Alice"] = 30;
    
    int Alice_жашы = жаштар["Alice"]; // маанини алабыз
    
    // жаштар["Bob"]; // Эгер "Bob" ачкычы жок болсо, KeyNotFoundException чыгат
    
  2. TryGetValue(key, out value) ыкмасы:

    • белгилүү бир ачкыч боюнча маанини табууга аракет кылат.
    • Эгер ачкыч табылса, true кайтарат жана value өзгөрмөсүнө маанини жүктөйт.
    • Эгер ачкыч табылбаса, false кайтарат жана value мааниси типтин по умолчанию болот.
    • Көп коопсуз, анткени ачкыч жок болсо да иштейт.
    // TryGetValue колдонуу мисалы
    Dictionary<string, int> жаштар = new Dictionary<string, int>();
    жаштар["Alice"] = 30;
    
    int Alice_жашы;
    if (жаштар.TryGetValue("Alice", out Alice_жашы))
    {
        // "Alice" ачкычы табылды, Alice_жашы 30
        // ... колдонобуз
    }
    
    int Bob_жашы;
    if (жаштар.TryGetValue("Bob", out Bob_жашы))
    {
        // Бул блок ишке ашпайт, анткени "Bob" ачкычы жок
    }
    else
    {
        // "Bob" ачкычы табылган жок, Bob_жашы 0 (по умолчанию)
    }
    

Мындан тышкары, GetValueOrDefault(key) ыкмасын колдонсо болот ( .NET Core 2.1+ жана .NET Standard 2.1+), ал белгилүү ачкыч боюнча маанини кайтарат же по умолчанию маанини, эгер ачкыч жок болсо.

// GetValueOrDefault колдонуу мисалы
Dictionary<string, int> жаштар = new Dictionary<string, int>();
жаштар["Alice"] = 30;

int Alice_жашы = жаштар.GetValueOrDefault("Alice"); // 30
int Bob_жашы = жаштар.GetValueOrDefault("Bob");     // 0 (по умолчанию)