3

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

但是,为了处理包含失败行为的双条件语句,我经常在简单的if、else if、else语句和switch语句之间犹豫不决:

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 声明文章指出:

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

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

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

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

4

3 回答 3

3

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

但是,if... else if...通常更强大,因为它可以做一些switch不能做的事情。

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

于 2012-11-13T02:08:15.047 回答
0

我认为 If 是“条件”,而 Switch 是“选项”

于 2012-11-14T01:43:22.240 回答
-1

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

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

于 2012-11-13T02:12:56.237 回答