Сравнение ключа и значения в Dictionary

Рейтинг: 0Ответов: 1Опубликовано: 11.08.2023

Всем доброго дня, подскажите пожалуйста. Пытаюсь сравнить ключ со значением, при любом варианте выдает good!!! (еще не дописано, нет проверок и исключений)

using System.Collections.Generic;
using System.Runtime.Intrinsics.X86;
using System.Xml.Linq;

class Program
{
    private static Dictionary<string, string> Words = new Dictionary<string, string>()
    {

        { "i","я"   },
        {"we", "мы" },
        {"they", "они" },
        {"he", "он" },
        {"she", "она" }

    };

    public static string look()
    {
        Random random = new Random();
        int randomIndex = random.Next(0, Words.Count);
        string randomKey = Words.Keys.ElementAt(randomIndex);
        string randomValue = Words[randomKey];
        return randomValue;
    }

    static void Main(string[] args)
    {

        Console.WriteLine("Учим английский");
        Console.WriteLine();


        bool exit = true;
        while (exit)
        {

            string randomWord = look();
            Console.WriteLine($"Какой перевод у слова ' {randomWord} '  ?"); ;

            string enterWord = Console.ReadLine();

            if (enterWord == "exit")
            {
                exit = false;
                break;
            }

           
            if (Words.ContainsKey(randomWord) == Words.ContainsValue(enterWord))
            {
                Console.WriteLine("good!!!");
            }
        }
    }
}

Ответы

▲ 2Принят
if (Words[randomWord] == enterWord) {
    Console.WriteLine("good!!!");
}

ContainsKey и ContainsValue возвращают true если такой ключ или такое значение есть в словаре. Вы же, видимо, хотите проверить, что введённое слово есть по нужному ключу?

При этом метод look как я полагаю должен возвращать всё же ключ (return randomKey;), а не значение из словаря. Потому что вы хотите проверить перевод английского слова, а не перевод русского слова