为什么 ReSharper 声称 'Value not Used in any execution path' 明明是?

Why does ReSharper claim that 'Value not Used in any execution path' when it clearly is?

我有一个非常简单的 C# 问题,但请考虑以下代码:

using System;

namespace ConsoleApp3
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            var valid = true;

            var something = Console.ReadLine();

            if (something == "Boom")
            {
                valid = false;
            }

            valid = DetermineSomethingElse();

            if (!valid)
            {
                return;
            }

            Console.WriteLine("Kerplamo");
        }

        private static bool DetermineSomethingElse()
        {
            var random = new Random();
            var next = random.Next(0, 5);

            return next == 3;
        }
    }
}

ReSharper 声称有效分配在:

if (something == "Boom")
{
    valid = false;
}

未使用,我可以安全地删除它,但我认为这不准确。

我是不是遗漏了一些明显的东西,或者 ReSharper 在分析我的代码时出错了?

编辑:没关系,我是个白痴!

谢谢

因为无论如何你都要重新分配它。 您在此处分配它:

 if (something == "Boom")
 {
     valid = false;
 }

并在这里重新分配它,而不是之前使用它:

valid = DetermineSomethingElse();

ReSharper 是对的。赋值后不访问valid。试试这个代码

if (something == "Boom")
{
    valid = false;
}
valid = valid && DetermineSomethingElse();

您正在覆盖立即生效的变量。可以删除整个 if 块,或者您必须修复下面的行(例如像 Aleks 向您展示的那样)。