嵌套或不嵌套的if块?我想知道在C#中使用ifs时是否存在性能差异,它们是否嵌套。这是一个例子:if(hello==true){if(index==34){DoSomething();}}这比这快还是慢:if(hello==true&&index==34){DoSomething();}有任何想法吗?编译器可能足够聪明,可以为两个版本生成相同或非常相似的代码。除非性能真的是您应用程序的关键因素,否则我会自动选择第二个版本以提高代码可读性。更好的是if(SomethingShouldBeDone()){DoSomething();}...而在城市的另一部分...privateboolSomethingShouldBeDone(){returnthis.hello==true&&this.index==34;在99%的现实生活中,这对性能影响很小或没有影响,只要你有意义地命名它,它就更容易阅读、理解和(因此)维护。使用最易读且仍然正确的那个(有时在布尔表达式周围玩杂耍会给你不同的行为-特别是如果涉及短路)。执行时间将相同(或太接近)。仅作记录,有时我发现嵌套更具可读性(如果表达式太长或组件太多),有时我发现它的可读性较差(如您的简短示例)。任何现代编译器,我指的是过去20年内构建的任何东西,都会将这些编译器编译成相同的代码。至于你应该使用哪个,那就看哪个在项目上下文中更具可读性和逻辑性了。通常,我会自己选择第二个,但这因人而异。值得考虑的一个重点是维护。我发现的一个更常见的错误是在嵌套的ifs块中间悬挂if/else。如果您有一系列复杂的ifelse条件,这些条件已被不同的程序员在一段时间内修改-通常是几年。例如,对于一个简单的案例,使用伪代码:IFcondition_aIFcondition_bDosomethingELSEDosomethingENDIFELSEIFcondition_bDosomethingENDIFENDIF你会注意到这个组合!条件_a&&!condition_b代码将通过无条件条件。对于这两个条件,这很容易找到,但是一旦您有3、4个或更多if/else条件要检查,就很容易错过。通常发生的情况是嵌套结构在第一次编码时是正确的,但在稍后的某个时间点(在业务输出方面)变得不正确,因为维护程序员不会理解或允许所有选项。因此,随着时间的推移,在if结构中使用组合条件进行编码通常会更加健壮,尽可能采用最可行的结构并将嵌套保持在最低限度,因此使用您的示例是因为没有合乎逻辑的理由不将两个条件组合成一个语句然后你应该。我没有看到两者之间有任何明显的性能差异,但我认为选项二更具可读性。我认为您可能不会体验到这两种实现之间的任何性能差异。无论如何,我选择了后者的实现,因为它更具可读性。取决于编译器。当在嵌套if之后但在外部闭包之前有代码时,差异更加明显。我自己也经常想知道这个问题。但是,选项之间似乎真的没有区别(或差别不大)。就可读性而言,第二个选项更具可读性,所以我通常会选择它,除非我预计出于某种原因必须针对每个条件专门编写代码。以上就是C#学习教程:嵌套还是不嵌套if块?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
