我不明白为什么我的第一段代码工作正常,但第二次尝试将字符串转换为整数。我认为这是随机函数发生的事情,但我不明白是什么?
输入数字后,我的最后一段代码会出现以下错误:
未处理的异常: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());
答案 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。