2012-04-27 15 views
0

私はC#で次のコードを書き、エラー がコードがある:暗黙的に「文字」に型「System.ConsoleKey」を変換できません

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

エラー:

間違って何

Error 1 Cannot implicitly convert type 'System.ConsoleKey' to 'char'. An explicit conversion exists (are you missing a cast?)

は、 ?

+0

System.ConsoleKeyをどこかで使用しています.Netは、char(メソッド引数または代入内におそらく?)を想定しています。問題はあなたが提供したコードにはありません。 – Falanwe

+0

@Falanwe:問題*は、提供されたコードに記載されています。あなたはそれをコンパイルしようとしましたか? –

答えて

2

代わり

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

を必要としています。

定数ConsoleKey.DownArrowは、タイプConsoleKeyであり、Console.ReadKey(true).KeyCharは、タイプcharです。 charConsoleKeyは異なるタイプなので、このコードはコンパイルできません。代わりに、戻り値がのReadKeyのプロパティを使用すると、ConsoleKeyが得られます。これはswitchステートメントの場合と同じ型です。

+0

あなたの答えは正しいが違いは何ですか? – Witcher

+0

@Witcher:KeyとKeyCharプロパティのタイプを調べます。 –

4

Keyプロパティ(ConsoleKeyを返します)がKeyCharcharを返します)ではなく、欲しいとします。

コンパイラが型の問題を示唆している場合は、期待しているものと実際に何があるのか​​を見て、期待したものとは異なるものを探してください。

関連する問題