switch语句是否优于biconditional和fall-through if语句?

时间:2012-11-13 02:04:05

标签: c# clr conditional-statements

当我必须编写多个条件语句时,我通常使用开关语句,通常是有三个或更多明确定义的条件。

但是,要处理双边声明,包括堕落行为,我经常会在简单的 if,else if,else 声明与之间犹豫不决切换声明:

if (condition1)
{
    // handling condition1.
}
else if (condition2)
{
    // handling condition2.
}
else 
{
    // handling fall-through.
}

switch (n)
{
    case condition1:
    // handling condition1.
    break;

    case condition2:
    // handling condition2.
    break;

    default:
    // handling fall-through.
    break;
}

Wikipedia Switch statement article州:

  

在某些语言和   编程环境,使用case或switch语句   被认为优于等价的if-else语句系列   因为它是:

     
      
  • 更容易调试(例如,如果调试器没有条件断点功能,则在代码与调用表上设置断点)
  •   
  • 更容易阅读(主观)
  •   
  • 更容易理解,因此
  •   
  • 更易于维护
  •   
  • 更快的执行潜力
  •   

关于.NET公共语言运行时,在这种情况下,switch语句的更快的执行潜力是否切合实际?

我很想知道公共语言运行时如何处理这两种情况以及如何优先于另一种情况。

3 个答案:

答案 0 :(得分:3)

更快的执行潜力意味着它尽可能尝试使用二进制搜索(而不是if... else if...情况下的线性搜索)。

但是,if... else if...通常更强大,因为它可以执行switch无法执行的操作。

所以我想如果你需要做的就是比较字符串或整数,请使用switch。它还有助于提高可读性。

答案 1 :(得分:0)

我认为如果是“条件”而Switch是“选项”

答案 2 :(得分:-1)

如果您正在考虑编译时间目的,IF CONDITION总是更可取。 如果条件比切换案例检查更快。

但是如果你以编程方式瘦,那么If条件只是一系列布尔检查。 为了使程序有效工作,应该使用switch case(尽管它会消耗时间)。