У меня проблемы со значениями, которые возвращаются 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());