Resharper 告诉我这段代码中的“else”是多余的:
if(a)
{
//Do Something
}
else if(b)
{
//Do Something
}
else
似乎并不多余,因为如果为else
真,则b
不会被评估a
。b
如果是一个变量,额外的开销很小,但b
也可以是一个表达式。
这个对吗?
Resharper 告诉我这段代码中的“else”是多余的:
if(a)
{
//Do Something
}
else if(b)
{
//Do Something
}
else
似乎并不多余,因为如果为else
真,则b
不会被评估a
。b
如果是一个变量,额外的开销很小,但b
也可以是一个表达式。
这个对吗?
如果您在第一个块内有某种break
, continue
,return
或throw
语句(甚至是goto
)if
总是导致执行分支到当前块之外,这是多余的:
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 子句从方法返回。因此,即使没有 else,您也无法通过 if 子句主体。
这对我来说似乎并不多余。如果两者都为真a
,则删除 else 将导致不同的程序流程。b