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

问题描述 投票:4回答:1

我有以下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);
    }
}

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

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

IDE0059

当我通过选择“删除冗余分配”来遵循建议时,它将删除行success = true;,有效地改变了结果!

现在问开关/保护套是什么?删除该建议后,该建议将消失:

Animation

是否有任何原因,或者是Visual Studio中的错误?

c# .net visual-studio-2019 roslyn
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.