C#更好的是if/return还是if/return/else?
我正在编写一些非常长的函数,它们必须检查值并在找到特定模式时返回C#更好的是if/return还是if/return/else?,c#,performance,function,C#,Performance,Function,我正在编写一些非常长的函数,它们必须检查值并在找到特定模式时返回true。我正在执行if检查,并在一个条件失败后返回false,绝不使用本例中的else部分 if (a < 0) { return false; } // code if (b < 0) { return false; } // code if (a + b / c > d) { return false; } // code 我认为你所举的例子只是为了演示。然而,一般来说,这只是可读性
true
。我正在执行if
检查,并在一个条件失败后返回false
,绝不使用本例中的else
部分
if (a < 0) {
return false;
}
// code
if (b < 0) {
return false;
}
// code
if (a + b / c > d) {
return false;
}
// code
我认为你所举的例子只是为了演示。然而,一般来说,这只是可读性的问题,在编译器进行优化时没有性能差异。就我个人而言,我更喜欢你回来的方式。如果你有一个较长的逻辑,它更容易理解某些无效的场景。而且比嵌套的if/else块更干净。只是我的意见。你最初的if-without-else很正确,但是 这是一个简短易读且高效的方法
if (a < 0 && b < 0 && (a + b)/ c > d)
{
return false;
} else
{
if(a<0&&b<0&&a+b)/c>d)
{
返回false;
}否则
{
如果不需要else,则我将使用以下代码。如果需要else,则我更喜欢DeshDeep提到的答案
我会更喜欢,因为有较少的代码行,但它是取决于个人的选择
if (a < 0 || b <0 || (a + b / c > d)) {
return false;
}
if(a<0 | | bd)){
返回false;
}
Related?FWIW,ReSharper将您的每个else
语句标记为冗余。我想说的是,您当前所做的很好,它更可读,并且您没有嵌套If语句,这也将允许它具有更好的可维护性,而不使用If(a<0 | b<0 |(a+b/c>d))返回false。这也是从左边计算的,所以也是相同的性能。@SonerGönül谢谢,这是我问题的答案@JamesThorpe这是一个很好的确认。请注意,这是“真实代码”中的一个示例重新计算变量时,我不能将所有变量折叠在一个语句中如果该逻辑不正确,您应该使用|
而不是&
。您还更改了最终表达式,a+b/c>d
将被计算为a+(b/c)>d
if (a < 0 || b <0 || (a + b / c > d)) {
return false;
}