System.InvalidCastException - 两种情况只有一个错误

时间:2018-06-15 00:01:03

标签: c#

我不明白为什么我的第一段代码工作正常,但第二次尝试将字符串转换为整数。我认为这是随机函数发生的事情,但我不明白是什么?

输入数字后,我的最后一段代码会出现以下错误:

  

未处理的异常:System.InvalidCastException:无法将类型为“System.ConsoleKeyInfo”的对象强制转换为“System.IConvertible”。

代码:

Console.WriteLine();
Console.WriteLine("Which animal do you choose? Tiger (press 1) Wolf (press 2)");

int UserAnimal = Convert.ToInt32(Console.ReadLine());

Console.WriteLine("What is your name?");
string PlayerName = Console.ReadLine();
Console.WriteLine();

Console.WriteLine("Game live {0}! Guess a number between 1-10", PlayerName);

Random Random = new Random();
int RandomNumber = Random.Next(1, 11);
int CorrectNumber = RandomNumber;

int Guess = Convert.ToInt32(Console.ReadKey());

2 个答案:

答案 0 :(得分:2)

在最后一行中,您调用Console.ReadKey(),它返回结构System.ConsoleKeyInfo的对象,而不是Console.ReadLine()。返回的结构无法通过调用int直接转换为Convert.ToInt32()

Console.ReadKey()更改为Console.ReadLine(),或:

int Guess = Convert.ToInt32(Console.ReadKey().KeyChar);

答案 1 :(得分:1)

Console.ReadKey()返回ConsoleKeyInfo类型,而Console.Readline返回一个字符串。转换无法将ConsoleKeyInfo类型转换为int。