Sobes.tech
Junior
116
questionbank

Как получить значение по ключу в словаре в C#?

Ответ от нейросети

sobes.tech AI

Можно использовать индексатор с ключом или метод TryGetValue.

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

    • Возвращает значение по указанному ключу.
    • Выбрасывает KeyNotFoundException, если ключ отсутствует.
    // Пример использования индексатора
    Dictionary<string, int> ages = new Dictionary<string, int>();
    ages["Alice"] = 30;
    
    int aliceAge = ages["Alice"]; // Получаем значение
    
    // ages["Bob"]; // Выбросит KeyNotFoundException, если ключа "Bob" нет
    
  2. Метод TryGetValue(key, out value):

    • Пытается найти значение по указанному ключу.
    • Возвращает true, если ключ найден, и присваивает значение переменной value.
    • Возвращает false, если ключ не найден, и value будет иметь значение по умолчанию для типа данных.
    • Более безопасен при работе с потенциально отсутствующими ключами.
    // Пример использования TryGetValue
    Dictionary<string, int> ages = new Dictionary<string, int>();
    ages["Alice"] = 30;
    
    int aliceAge;
    if (ages.TryGetValue("Alice", out aliceAge))
    {
        // Ключ "Alice" найден, aliceAge содержит значение 30
        // ... используем aliceAge
    }
    
    int bobAge;
    if (ages.TryGetValue("Bob", out bobAge))
    {
        // Этот блок не выполнится, так как ключа "Bob" нет
    }
    else
    {
        // Ключ "Bob" не найден, bobAge будет 0 (значение по умолчанию для int)
    }
    

Также можно использовать метод GetValueOrDefault(key) (в .NET Core 2.1+ и .NET Standard 2.1+), который возвращает значение по указанному ключу или значение по умолчанию, если ключ не найден.

// Пример использования GetValueOrDefault
Dictionary<string, int> ages = new Dictionary<string, int>();
ages["Alice"] = 30;

int aliceAge = ages.GetValueOrDefault("Alice"); // 30
int bobAge = ages.GetValueOrDefault("Bob");     // 0 (значение по умолчанию)