1

这是我的原始代码,我试图修改它以将数据输入限制为单个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?)

这对我来说并没有多大意义……而且谷歌也不是很有帮助。我试过这个,

    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()。我怎样才能返回一个charwith ToUpper()

4

1 回答 1

3

Console.ReadKey() 返回一个ConsoleKeyInfo。将来您可以通过阅读文档自己回答这些问题。ConsoleKeyInfo 页面有一个完整的使用示例。关键是:

cki = Console.ReadKey();
Console.WriteLine(cki.Key.ToString());
于 2013-05-11T01:27:04.317 回答