C# 验证整数是否等于字符串

C# 验证整数是否等于字符串,c#,if-statement,C#,If Statement,所以我只是想检查我的变量是否是以字符串形式输入的,我想让if语句通过,而不是一个未处理的异常 这是我的密码: Console.Write("Input: "); int i; bool success = int.TryParse("", out i); if (success) { Console.WriteLine("Enter Integer!"); } else { i = Convert.ToInt32(Console.ReadLine()); Console

所以我只是想检查我的变量是否是以字符串形式输入的,我想让if语句通过,而不是一个未处理的异常

这是我的密码:

Console.Write("Input: ");
int i;
bool success = int.TryParse("", out i);

if (success) {
    Console.WriteLine("Enter Integer!");
} else {
    i = Convert.ToInt32(Console.ReadLine());
    Console.WriteLine("Output: ", i);
}

那么我做错了什么?每次我输入一个字符串时,我都没有得到if语句,只是一个崩溃

我认为你应该这样做

Console.Write("Input: ");
int i;

bool success = int.TryParse(Console.ReadLine(), out i); //Getting the input and checking it

if (!success)
{
    Console.WriteLine("Enter Integer!");
}

else
{      
    Console.WriteLine("Output: ", i);
}

在代码中,您在else语句中获取值,如果您的输入无法解析为int,则会引发异常。

代码中的问题是,传递给TryParse的值与传递给Convert.ToInt32的值没有连接。您应该读取中的值,然后使用相同的值调用TryParse:

如果要继续读取直到最终用户输入有效的int,请添加一个循环,如下所示:

int i;
do {
    Console.WriteLine("Enter an integer:");
    var s = Console.ReadLine();
} while (!int.TryParse(s, out i));

你得到的例外是什么?阅读文档!如果成功解析数字,则TryParse返回true。所以你的if和else是错误的。另外,您不需要将.ToInt32转换为。因为您刚刚解析了您的号码。如果您遇到故障,您也会得到一些反馈。怎么了?它是否包含建议的行动方案?不是整数,因此成功将为false,这将使您进入else块。然后,无论您键入什么,都会导致ToInt32引发异常。另外请注意,您不需要额外的Convert.ToInt32,因为int.TryParse已经用正确的值初始化了i(如果可以解析的话)。
int i;
do {
    Console.WriteLine("Enter an integer:");
    var s = Console.ReadLine();
} while (!int.TryParse(s, out i));