C# switch语句是否优于双条件和fall-through if语句?

C# switch语句是否优于双条件和fall-through if语句?,c#,clr,conditional-statements,C#,Clr,Conditional Statements,当我必须编写多个条件语句时,我通常使用switch语句,通常是在有三个或更多定义良好的条件的情况下 然而,为了处理一个包括失败行为在内的双条件语句,我经常在简单的if、else if、else语句和切换语句之间犹豫: if (condition1) { // handling condition1. } else if (condition2) { // handling condition2. } else { // handling fall-through. }

当我必须编写多个条件语句时,我通常使用switch语句,通常是在有三个或更多定义良好的条件的情况下

然而,为了处理一个包括失败行为在内的双条件语句,我经常在简单的if、else if、else语句和切换语句之间犹豫:

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

各国:

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

  • 易于调试(例如,如果调试器没有条件断点功能,则在代码和调用表上设置断点)
  • 易读(主观)
  • 更容易理解,因此
  • 易于维护
  • 更快的执行潜力
关于.NET公共语言运行时,switch语句的更快执行潜力在这种情况下是否现实


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

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

但是,
如果。。。否则,如果…
通常更强大,因为它可以做
开关
无法做的事情


因此,我想如果您只需要比较字符串或整数,请使用
开关。它也有助于提高可读性。

如果您考虑编译时间的目的,那么条件总是更可取的。 如果条件比开关箱更快检查

但若你们用程序进行精简,那个么条件只是一系列的布尔检查。
为了使程序有效运行,应使用开关盒(尽管它会消耗时间)。

我认为If代表“条件”,开关代表“选项”

让我告诉你,我认为If代表“条件”,开关代表“选项”。当你有多个嵌套时,我总是发现开关更整洁,更容易阅读,但是写起来需要更多的空间。最重要的是,当涉及到复杂的类型检查时,switch无法工作(除非使用.ToString()),而一系列的if是唯一的选择。@BuiAkinori:我喜欢你的评论。你应该把这写下来作为回答,我会给你一票的
switch (n)
{
    case condition1:
    // handling condition1.
    break;

    case condition2:
    // handling condition2.
    break;

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