[英]Resharper redundant 'else' really redundant?
Resharper告诉我这段代码中的'else'是多余的:
if(a)
{
//Do Something
}
else if(b)
{
//Do Something
}
else
似乎并不多余,因为如果a
为真, else
会阻止b
被评估。 如果b
是变量,则额外开销很小,但b
也可以是表达式。
这个对吗?
如果你在第一个if
-block中有一些break
, continue
, return
或throw
语句(甚至是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子句体。
这对我来说似乎并不多余。 如果a
和b
都为真,则删除else将导致不同的程序流。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.