У меня проблемы со значениями, которые возвращаются Console.ReadKey()

Вот мой оригинальный код, который я пытался изменить, чтобы ограничить ввод данных одним char, преобразованный в верхний регистр.

    public char promptForGuess()
    {
        Console.Write("\nGuess a letter: ");
        return Convert.ToChar(Console.ReadLine().ToUpper());
    }

Я думал, что это будет легко

    public char promptForGuess()
    {
        Console.Write("\nGuess a letter: ");
        return Convert.ToChar(Console.ReadKey().ToUpper());
    }

но я получаю эту ошибку:

'System.ConsoleKeyInfo' does not contain a definition for 'ToUpper' and no extension method 'ToUpper' accepting a first argument of type 'System.ConsoleKeyInfo' could be found (are you missing a using directive or an assembly reference?)

что на самом деле не так много значит для меня... и Google тоже не очень помог. Я попробовал это,

    public char promptForGuess()
    {
        Console.Write("\nGuess a letter: ");
        return = Console.ReadKey();
    }

и получил сообщение, которое я не могу неявно преобразовать ReadKey() в char,

    public String promptForGuess()
    {
        Console.Write("\nGuess a letter: ");
        return Console.ReadKey();
    }

говорит мне, что я не могу неявно преобразовать Console.ReadKey() в String

Так что, если это не так char и не Stringкакой тип Console.ReadKey(), И как я могу вернуть char с ToUpper()?

1 ответ

Решение

Console.ReadKey() возвращает ConsoleKeyInfo. В дальнейшем вы можете сами ответить на эти вопросы, прочитав документацию. Страница ConsoleKeyInfo содержит полный пример того, как ее использовать. Ключевой бит:

cki = Console.ReadKey();
Console.WriteLine(cki.Key.ToString());
Другие вопросы по тегам