Visual Studio IDE0059 C# 不必要的赋值错误?

Visual Studio IDE0059 C# Unnecessary assignment of a value bug?

我有以下 C# 代码(我将它减少到最低限度以简化它)。 Visual Studio 2019 年,.NET 框架 4.7.2。

public void Demo()
{
    ReportStart();
    var success = false;
    try
    {
        int no = 1;
        switch (no)
        {
            case 1:
            default:
                break;
        }

        DoSomething();

        success = true;
    }
    finally
    {
        ReportEnd(success);
    }
}

根据我的理解,这没有错。该函数可能会失败(我不想捕获它)但是在离开之前,它会向另一个方法报告执行成功。调试时,它确实做了它应该做的事情。

有趣的是,Visual Studio 2019 年将报告以下内容:

当我按照建议选择 "Remove redundant assignment" 时,它会删除行 success = true;,有效地改变了结果!

现在你会问 switch/case 有什么用?删除它时,建议消失:

有什么原因吗,还是 Visual Studio 中的错误?

这似乎是 Roslyn 和 Visual Studio 2019 16.4 的已知问题,请参阅 GitHub 问题 #39755 and #39344

里程碑设置为版本 16.5 预览版 2,因此它已经修复,您可以尝试 16.5 版本的预览版 2 或等待稳定版本(个人而言,我没有使用预览版)