【问题标题】:IDE0059 Unnecessary assignment of a value to 'number'IDE0059 为“数字”分配了不必要的值
【发布时间】:2020-09-22 06:00:49
【问题描述】:

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

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);
}

【问题讨论】:

  • 这个方法没有任何意义——如果你想得到用户的输入,你为什么不返回呢?如果您想指示输入是否为有效的 int,为什么不返回 bool
  • @ZoharPeled 是的,我同意。我的 Spidey Senses 告诉我(这可能是错误的),OP 正在使用该值作为下线方法的布尔开关,然后调用 Convert.... 或者代码是只是错了。不管怎样,有些东西看起来很可疑
  • 关于您的编辑,是的,您最初确实编写了糟糕的代码,但这是一个很好的问题。恕我直言,您不应该通过编辑来回答您的问题,而是添加一个答案。发布自己问题的答案并不违反规则。
  • 您好,您最近的编辑已被回滚,因为它没有遵循问答格式。提交自己问题的答案不仅被允许而且被鼓励。
  • static int Check_input(string input) => Int32.TryParse(input, out int _) ? 1 : 0;

标签: c# integer


【解决方案1】:

在您的方法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 的 out 参数,只调查它的返回值以检查您的方法应该返回哪个值。

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

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");
}

【讨论】:

    【解决方案2】:

    您不需要使用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);
    }
    

    【讨论】:

    • 无论输入是否为整数,此代码都不会给出反馈。使用41 作为输入,它将返回41。使用0 作为输入,它会返回0... 使用Hello! 作为输入,它也会返回0
    • 是的,我忘记返回 is_valid 而不是 number。
    猜你喜欢
    • 1970-01-01
    • 2020-11-16
    • 2021-03-29
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 2012-03-14
    • 2020-04-17
    • 1970-01-01
    相关资源
    最近更新 更多