IDE0059 对 'number' 不必要的赋值

IDE0059 Unnecessary assignment of a value to 'number'

我接到了一个作业,其中有一些用户输入。我的目标是只允许用户输入一个整数。该程序按我的意愿运行,但这条消息让我很困惑。 那里有什么问题,我该如何解决?

static int Check_input(string input)
{
    bool is_valid = Int32.TryParse(input, out int number);
    if (is_valid)
    {
        number = 1;
    }
    else
    {
        number = 0;
    }

    return (number);
}

您不需要用 out int number 分配数字,因为您稍后会将其设置为 0 或 1。

更准确的说你的if,else反正没用。您已经将数字设置为 1 或 0,否则无论如何都无法将其设置为布尔值。

固定代码:

static bool Check_input(string input) {
    bool is_valid = Int32.TryParse(input, out _);
    return (is_valid);
}

在您的方法 bool is_valid = Int32.TryParse(input, out int number); 的第一行中,您创建了一个新变量 number 并为其赋值。但是您永远不会使用这个值,因为您立即将值 1 或 0 分配给它。实际上,您可以缩短您的代码

static int Check_input(string input)
{
    bool is_valid = Int32.TryParse(input, out _);
    if (is_valid)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}

在这里,您丢弃了 TryParse 的输出参数,只调查它的 return 值以检查您的方法应该 return.

但实际上,您应该 return 一个布尔值来查看用户是否输入了有效数字,这将使您的方法看起来像这样:

static bool Check_input(string input)
{
   return Int32.TryParse(input, out _);
}

这更简单,使用布尔变量比使用可能为 1 或 0 的整数更容易。比较一下:

if(Check_input("test") == 1)
{
   Console.WriteLine("good input");
}
else
{
   Console.WriteLine("bad input");
}

if(Check_input("test"))
{
   Console.WriteLine("good input");
}
else
{
   Console.WriteLine("bad input");
}