为什么 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 向您展示的那样)。
我有一个非常简单的 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 向您展示的那样)。