嵌套或不嵌套的if-blocks?

Bev*_*vin 4 .net c#

我想知道在C#中使用ifs时是否存在性能差异,它们是否嵌套.这是一个例子:

if(hello == true) {
    if(index == 34) {
        DoSomething();
    }
}
Run Code Online (Sandbox Code Playgroud)

这比这更快还是慢:

if(hello == true && index == 34) {
    DoSomething();
}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Kon*_*man 15

可能编译器足够聪明,可以为两个版本生成相同或非常相似的代码.除非性能确实是您应用程序的关键因素,否则为了代码可读性,我会自动选择第二个版本.


Fin*_*nNk 5

更好的是

if(SomethingShouldBeDone()) {
    DoSomething();
}
Run Code Online (Sandbox Code Playgroud)

......同时在城市的另一个地方......

private bool SomethingShouldBeDone()
{
    return this.hello == true && this.index == 34;
}
Run Code Online (Sandbox Code Playgroud)

在99%的现实生活中,这对性能影响很小或没有,并且只要你有意义地命名,它就会更容易阅读,理解和(因此)维护.

  • 这可能是个人偏好,但我不同意这个更具可读性,因为除非你去那个方法检查它,否则不可能看到这个方法做什么.在任何情况下,我都会使用getter而不是方法来创建它,因为它描述了类的*属性*,而不是主动执行类似方法的操作(比如从数据库中获取内容). (3认同)