我有以下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将报告以下内容:
当我通过选择“删除冗余分配”来遵循建议时,它将删除行success = true;
,有效地改变了结果!
现在问开关/保护套是什么?删除该建议后,该建议将消失:
是否有任何原因,或者是Visual Studio中的错误?