C# 主脑游戏的主菜单

C# 主脑游戏的主菜单,c#,C#,我正在尝试为一个可以在命令提示符下使用C#运行的智囊团游戏创建菜单。我遇到的问题是捕获用户对菜单的输入。如果他们输入了2,则应显示他们输入了数字2,如果没有,则表示他们没有显示数字2 我遇到的问题是,它不会将用户输入转换为工作整数,并且会出现这样的情况,即它不能显式地将System.ConsoleKeyInfo转换为int或将string转换为int using System; namespace MasterMind { class Program { sta

我正在尝试为一个可以在命令提示符下使用C#运行的智囊团游戏创建菜单。我遇到的问题是捕获用户对菜单的输入。如果他们输入了2,则应显示他们输入了数字2,如果没有,则表示他们没有显示数字2

我遇到的问题是,它不会将用户输入转换为工作整数,并且会出现这样的情况,即它不能显式地将System.ConsoleKeyInfo转换为int或将string转换为int

using System;

namespace MasterMind
{
    class Program
    {
        static void Main(string[] args)
        {

            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine("               MasterMind's Main Menu");
            Console.WriteLine("                    1: Play");
            Console.WriteLine("                    2: Help");
            Console.WriteLine("                    0: Exit");
            int userinput = Console.ReadKey();
            if (Nuserinput == 2);
            {
                Console.WriteLine("This is a number 2");
            }
            else
            {
                Console.WriteLine("This is not a number 2");
            }
        }
    }
}
返回一个,因此您需要执行以下操作:

ConsoleKeyInfo data = Console.ReadKey();
int num;
if (int.TryParse(data.KeyChar.ToString(), out num) && num == 2)
{
    Console.WriteLine("This is a number 2");
}else{
    Console.WriteLine("This is not a number 2");
}
Console.ReadKey()
,它不是
int
对象。您可以从中获取
char
,例如:

var key = Console.ReadKey();
var keyChar = key.KeyChar;
如果希望
char
值表示整数,可以将其转换为一:

int keyInt = (int)Char.GetNumericValue(keyChar);
除了在用户未输入有效整数的情况下可能需要进行的其他错误检查外,这至少会使您获得所需的整数值。

更改您的

int userinput = Console.ReadKey();
if (Nuserinput == 2)
致:


或者将字符串转换为int,如其他答案所示。但是对于这一点,字符串可以正常工作。

Console.ReadKey()
返回
ConsoleKeyInfo
而不是
int
。Console.ReadKey()Doc:请在线阅读
Console.ReadKey()
的文档。它不符合你的想法。(这已经被问了很多次)。ConsoleKeyInfo文档:Char到Int-info:
string userInput = Console.ReadKey().KeyChar.ToString();
if(input == "2")