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

thm*_*shd 5 .net c# roslyn visual-studio-2019

我有以下 C# 代码(我将其减少到最低限度以简化它)。Visual Studio 2019,.NET Framework 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);
    }
}
Run Code Online (Sandbox Code Playgroud)

根据我的理解,这并没有什么不妥。该函数可能会失败(我不想抓住它)但在离开之前,它会向另一个方法报告成功执行。调试时,它会做它应该做的事情。

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

IDE0059

当我按照建议选择“删除冗余分配”时,它将删除该行success = true;,从而有效地改变结果!

现在你会问开关/外壳是什么?删除它时,建议消失:

动画片

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

Pav*_*ski 0

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

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