繁体   English   中英

Resharper冗余'其他'真的多余?

[英]Resharper redundant 'else' really redundant?

Resharper告诉我这段代码中的'else'是多余的:

if(a)
{
   //Do Something
}
else if(b)
{
   //Do Something
}

else似乎并不多余,因为如果a为真, else会阻止b被评估。 如果b是变量,则额外开销很小,但b也可以是表达式。

这个对吗?

如果你在第一个if -block中有一些breakcontinuereturnthrow语句(甚至是goto )总是会导致执行在当前块之外分支,那就多余了:

if(a)
{
    return 0;
}
else if(b)
{
    return 1;
}

在这种情况下,如果代码进入第一个块,则无法进入第二个块,因此它相当于:

if(a)
{
    return 0;
}
if(b)
{
    return 1;
}

在这种情况下你是对的,但这就是我认为他们开始时的原因:

某些if-else条件可以删除其else子句。 请考虑以下方法:

public int Sign(double d)
{
    if (d > 0.0)
        return 1;
    else
        return -1;
}

在上面,可以安全地删除else语句,因为它的if子句从方法返回。 因此,即使没有其他,你也无法通过if子句体。

这对我来说似乎并不多余。 如果ab都为真,则删除else将导致不同的程序流。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM