试图防止c#中出现异常(方法';TryParse';没有重载;

本文关键字:方法 TryParse 重载 异常 | 更新日期: 2023-09-27 18:20:30

我目前正在为c#控制台应用程序制作一个简单的菜单。。当键入字母而不是数字时,我正在努力防止出现异常。如有任何帮助或指导,我们将不胜感激。感谢

        userSelection = Int32.TryParse(Console.ReadLine()); 
        switch(userSelection)
        {   
        case 1:
            readFile();
            validAnswer = true;
            break;
        case 2:
            decryption();
            validAnswer = true;
            break;
        case 3:
            validAnswer = true;
            Environment.Exit(0);
            break;
        default:
            Console.Clear();
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine("Your selection is invalid. Please try  again.");
            Console.ResetColor();
            break;
        }
    }while (!validAnswer);
}

试图防止c#中出现异常(方法';TryParse';没有重载;

userSelection = Int32.TryParse(Console.ReadLine()); 

应为:

bool isNumber = Int32.TryParse(Console.ReadLine(), out userSelection);

TryParse接受两个参数,第一个是要转换的字符串,第二个是将转换结果(需要标记为out)放在哪里,如果转换成功,它将返回一个布尔值。

为了让你的开关工作,你可以做这样的事情:

bool isNumber = Int32.TryParse(Console.ReadLine(), out userSelection);
if (!isNumber)
    userSelection = -1;

这将使您的switch变为default,并表示输入的数字无效。

您可以将其分配给一个bool变量,该变量将指示操作是否成功。

int userSelection = -1;
bool res = Int32.TryParse(Console.ReadLine(), out userSelection);
if (res == false)
{
    // String is not a number.
}
else 
{
 //proceed
}