代码之家  ›  专栏  ›  技术社区  ›  Efe Belli

试图通过调试来弄清楚switch语句是如何工作的,但无法弄清楚执行顺序

  •  0
  • Efe Belli  · 技术社区  · 2 年前

    我试图弄清楚if语句和switch语句之间的区别。我写了这个代码:

    `int number = 3;
    switch (number)
    {
        case 1:
           Console.WriteLine("1");
           break;
        case 3:
           Console.WriteLine("FOUND");
           break;
        default:
           Console.WriteLine("def");
           break;
    }`
    

    我正试图通过一行一行地使用调试器(F11(visualstudio))来解决这个问题。我不明白的是,这是否是一个if语句,如下所示: int number = 3; if (number == 1) { Console.WriteLine("1"); } else if (number == 3) { Console.WriteLine("333333"); } else { Console.WriteLine("def"); }

    它将逐行执行,并检查每个if块,如果为false,则跳到下一个条件语句。然而,对于switch case,我不明白它在哪里/何时或如何在switch语句的开头检查哪个switch case是相关的。情况1,3和默认值是否同时检查?这怎么可能呢?一切都是逐行执行的?

    尽管试图将方法与if语句和switch语句进行区分,但仍然无法理解switch用例是如何选择的。

    2 回复  |  直到 2 年前
        1
  •  0
  •   Rif    2 年前

    if语句: 当编译包含if语句的C#代码时,它被翻译成表示条件分支的机器代码指令。处理器评估条件,并基于结果,跳到与真实条件相关联的代码块所在的存储器地址,或者继续到if块之后的下一条指令。

    switch语句: switch语句在引擎盖下的工作方式不同。它通常被编译成一个跳转地址表或一系列基于案例的比较和分支指令。

    if语句涉及直接比较和基于评估条件的条件分支。另一方面,switch语句通常被编译成更优化的结构,如跳转表或一系列比较,以有效地处理多个情况。

        2
  •  0
  •   Prem Bhanushali    2 年前

    即使在运行javascript之前,js也会跳过代码并创建一个全局执行控制块,这就是它分配内存的地方;密码在您的情况下,它将内存分配给变量和函数,即,即使在运行实际代码&这就是为什么切换案例在一开始就被执行的原因。