无法将类型'System.ConsoleKey'隐式转换为'char'

时间:2012-04-27 17:57:04

标签: c# .net compiler-errors

我在c#中编写了以下代码,但是出现了错误 代码:

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

错误:

  

错误1无法将类型'System.ConsoleKey'隐式转换为'char'。存在显式转换(您是否错过了演员?)

出了什么问题?

2 个答案:

答案 0 :(得分:4)

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

如果有疑问,如果编译器建议存在类型问题,那么你应该看一下它的期望和它实际得到的东西 - 找出哪些不符合你的预期。

答案 1 :(得分:2)

你需要

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

代替。

常量ConsoleKey.DownArrow的类型为ConsoleKey,而Console.ReadKey(true).KeyChar的类型为char。由于charConsoleKey是不同的类型,因此此代码无法编译。相反,如果您使用ReadKey返回值的Key属性,则会获得ConsoleKey,其类型与switch语句中的大小写相同。