为什么至少输入一次无效整数后a=0的值

Why value of a=0 after entering atleast one time invalid integer

我正在尝试在 C# 中使用 TryParse 方法。 我正在创建一个程序,它从用户那里获取输入,如果它是整数,那么 return 到一个变量。当输入是有效整数时程序工作正常但是一旦我输入无效数字如 12sd 它 returns a=0。哪里错了。

public int checkValidNumber()
{
    Program obj = new Program();
    int a = 0;
    string str = Console.ReadLine();
    if(!int.TryParse(str, out a))
    {
      Console.WriteLine("Please enter a valid number");
      obj.checkValidNumber();
    }
    return a;
}

使用

在 Main 中调用
Program obj = new Program();
int a = obj.checkValidNumber();

程序是 Class,请考虑控制台应用程序

您应该将 obj.checkValidNumber(); 替换为:

a = obj.checkValidNumber();
//Or
return obj.checkValidNumber();

此外checkValidNumberProgram的成员函数,没有理由在每次调用

时都创建Program的新实例
public int checkValidNumber()
{
    int a=0;
    if(!int.TryParse(Console.ReadLine(), out a))
    {
      Console.WriteLine("Please enter a valid number");
      return checkValidNumber();
    }
    return a;
}

但最好为此使用 while 循环,而不是递归调用:

public int checkValidNumber()
{
    int a=0;
    while(!int.TryParse(Console.ReadLine(), out a))
    {
      Console.WriteLine("Please enter a valid number");
    }
    return a;
}

如果使用 C#7.0,请参阅 new usage of an out variable TryParse