0

我在c#中编写了以下代码,代码有错误:

switch (Console.ReadKey(true).KeyChar)
{
    case ConsoleKey.DownArrow:
        Console.SetCursorPosition(x,y);
        break;
}

错误:

错误 1 ​​无法将类型“System.ConsoleKey”隐式转换为“char”。存在显式转换(您是否缺少演员表?)

怎么了?

4

2 回答 2

4

您想要Key属性(返回ConsoleKey),而不是KeyChar(返回char)。

如果有疑问,如果编译器提示存在类型问题,您应该查看它的预期和实际得到的 - 并找出哪些不是您预期的。

于 2012-04-27T17:59:12.293 回答
2

你需要

switch (Console.ReadKey(true).Key)
{
    case ConsoleKey.DownArrow:
        Console.SetCursorPosition(x,y);
        break;
}

反而。

常量ConsoleKey.DownArrow是类型ConsoleKey,whileConsole.ReadKey(true).KeyChar是类型char。由于charConsoleKey是不同的类型,因此此代码无法编译。相反,如果你使用返回值的Key属性,你会得到一个,它与 switch 语句中的 case 类型相同。ReadKeyConsoleKey

于 2012-04-27T17:59:01.850 回答