Sobes.tech
Junior

Ako získať hodnotu podľa kľúča v slovníku v C#?

sobes.tech AI

Odpoveď od AI

Môžete použiť indexátor s kľúčom alebo metódu TryGetValue.

  1. Indexátor ([kľúč]):

    • Vráti hodnotu pre zadaný kľúč.
    • Vyhodí KeyNotFoundException, ak kľúč neexistuje.
    // Príklad použitia indexátora
    Dictionary<string, int> vek = new Dictionary<string, int>();
    vek["Alice"] = 30;
    
    int vekAlice = vek["Alice"]; // Získa hodnotu
    
    // vek["Bob"]; // Vyhodí KeyNotFoundException, ak "Bob" neexistuje
    
  2. Metóda TryGetValue(kľúč, out hodnota):

    • Pokúsi sa nájsť hodnotu pre zadaný kľúč.
    • Vráti true, ak bol kľúč nájdený, a priradí hodnotu premennej hodnota.
    • Vráti false, ak kľúč nebol nájdený, a hodnota bude mať predvolenú hodnotu pre typ.
    • Je bezpečnejšia pri práci s potenciálne chýbajúcimi kľúčmi.
    // Príklad použitia `TryGetValue`
    Dictionary<string, int> vek = new Dictionary<string, int>();
    vek["Alice"] = 30;
    
    int vekAlice;
    if (vek.TryGetValue("Alice", out vekAlice))
    {
        // Kľúč "Alice" bol nájdený, vekAlice obsahuje 30
        // ... použijeme
    }
    
    int vekBoba;
    if (vek.TryGetValue("Bob", out vekBoba))
    {
        // Tento blok sa nevykoná, pretože kľúč "Bob" neexistuje
    }
    else
    {
        // Kľúč "Bob" nebol nájdený, vekBoba bude 0 (predvolená hodnota)
    }
    

Tiež môžete použiť metódu GetValueOrDefault(kľúč) (v .NET Core 2.1+ a .NET Standard 2.1+), ktorá vráti hodnotu pre zadaný kľúč alebo predvolenú hodnotu, ak kľúč nie je nájdený.

// Príklad použitia `GetValueOrDefault`
Dictionary<string, int> vek = new Dictionary<string, int>();
vek["Alice"] = 30;

int vekAlice = vek.GetValueOrDefault("Alice"); // 30
int vekBoba = vek.GetValueOrDefault("Bob");     // 0 (predvolená hodnota)