如果在第一次“返回”之后有一个“else”,那么性能是否重要?

我现在已经看到了两种不同的方法来制作布尔返回方法:

bool Case1() { if (A) return true; else return false; } bool Case2() { if (A) return true; return false; } 

哪一个更快? 为了节省一条线路,使其更清晰,或者是否可以忽略不计的性能增益,是否有理由不写else

没有。

即使我们查看他们的IL代码,他们也有相同的IL代码,因此它们之间没有性能差异。 使用对您来说更具可读性的那个

 .method private hidebysig instance bool Case1() cil managed { // Code size 9 (0x9) .maxstack 1 .locals init ([0] bool CS$1$0000, [1] bool CS$4$0001) IL_0000: nop IL_0001: ldc.i4.0 IL_0002: stloc.1 IL_0003: ldc.i4.1 IL_0004: stloc.0 IL_0005: br.s IL_0007 IL_0007: ldloc.0 IL_0008: ret } // end of method Program::Case1 

看看这些代码的表现;

http://ideone.com/8Sc7Ho – >内存:33856 kB

http://ideone.com/MrnaAl – >内存:33808 kB

因此,如果你使用它们甚至10000次,也没有什么可担心的。

对于这两种情况,c#编译器应生成相同的IL,因此性能应该没有差异。 如果你好奇实际发生的事情(试图教如何钓鱼),你总是可以查看生成的IL 。

恕我直言, Case1更容易阅读,这是值得的。 我的第二选择是return A; (如其他一些答案所述)。 如果A不是bool ,则存在隐式转换,在某些情况下可能会令人困惑。

我认为可读性应该会赢,除非你能用剖析器certificate你有问题。

没有(可忽略的)差异。 从编码的角度来看,你真的应该这样做:

 return A; 

但假设代码只是一个例子,那么我建议:

 bool Case3() { bool retValue; if (A) { retValue = true; } else { retValue = false; } return retValue; } 

通过这种方式,您可以清楚地了解正在发生的事情以及要返回的价值。 如果您需要返回并更改该方法的function,则更容易。

表现明智,他们是一样的。 从良好的编码实践角度来看,更喜欢后者 – 因此很明显函数总是返回一个有效值。

他们是一样的。

如果A为假,则在两种情况下都会跳转到return false语句。