【问题标题】:Cannot implicitly convert type 'System.ConsoleKey' to 'char'无法将类型“System.ConsoleKey”隐式转换为“char”
【发布时间】:2012-04-27 17:57:03
【问题描述】:

我用c#写了下面的代码,但有一个错误 代码:

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

错误:

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

怎么了?

【问题讨论】:

  • 您在某个地方使用 System.ConsoleKey .Net 期待一个字符(可能在方法参数或赋值中?)。问题不在您提供的代码中。
  • @Falanwe:问题在提供的代码中。你试过编译吗?

标签: c# .net compiler-errors


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    你需要

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

    改为。

    常量ConsoleKey.DownArrowConsoleKey 类型,而Console.ReadKey(true).KeyCharchar 类型。由于charConsoleKey 是不同的类型,所以这段代码无法编译。相反,如果您使用ReadKey 返回值的Key 属性,您会得到一个ConsoleKey,它与switch 语句中的case 类型相同。

    【讨论】:

    • @Witcher:看看 Key 和 KeyChar 属性的类型。
    猜你喜欢
    • 2013-04-02
    • 1970-01-01
    • 2022-07-06
    • 2014-02-04
    • 2015-08-07
    • 2020-06-16
    • 2020-04-23
    • 1970-01-01
    • 2013-05-13
    相关资源
    最近更新 更多