C#整数验证

3 c# validation while-loop

我搜索了stackoverflow,但没有发现任何能回答我问题的内容.不幸的是,单词作为搜索查询并不是一个简单的问题.

我正在使用c#,我有一个菜单,要求用户从1 - 4中选择一个选项.我确认所选的值是一个整数,但每当我输入一个字母或符号时我的代码就会中断.如何为此添加验证?我的代码目前如下.

    static void Main(string[] args)
    {
        DirectoryInfo folderInfo = new DirectoryInfo("C:\\Windows");
        FileInfo[] files = folderInfo.GetFiles();
        int mainMenuChoice=0;
        while ( mainMenuChoice != 1 || mainMenuChoice!= 2 || mainMenuChoice!= 3 || mainMenuChoice!= 4)
        {
            Console.WriteLine("What would you like to do?");
            Console.WriteLine("1. Full File Listing.");
            Console.WriteLine("2. Filtered File Listing.");
            Console.WriteLine("3. FolderStatistics.");
            Console.WriteLine("4. Quit.");

            mainMenuChoice = int.Parse(Console.ReadLine());
            if (mainMenuChoice == 1)
            {
                Option1();
            }
            if (mainMenuChoice == 2)
            {
                Option2();
            }
            if (mainMenuChoice == 3)
            {
                Option3();
            }
            if (mainMenuChoice == 4)
            {
            }
            else
            {
                Console.WriteLine("you didnt enter a valid input! try again.");
            }
        }
Run Code Online (Sandbox Code Playgroud)

Ste*_*eve 6

将读数从命令行更改为

if(Int32.TryParse(Console.ReadLine(), out mainMenuChoice))
{
    if (mainMenuChoice == 1)
        Option1();
    else if (mainMenuChoice == 2)
        Option2();
    else if (mainMenuChoice == 3)
        Option3();
    else if (mainMenuChoice == 4)
        Option4();
    else
        Console.WriteLine("you didnt enter a valid input! try again.");
}
else
{
    Console.WriteLine("you didnt enter a valid input! try again.");
}
Run Code Online (Sandbox Code Playgroud)

并在TryParse的else部分中为您的用户重复警告消息if.

当命令行上的字符无法转换为整数并分配给out参数时,Int32.TryParse返回false mainMenuChoice.