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;
}