案例与其他假设:哪个更有效?

我已经再次在运行中编码。...当调试器逐步执行一个case语句时,它跳转到立即与条件匹配的项目,但是当使用if / else指定相同的逻辑时,它将逐步执行每个if语句。直到找到赢家。case语句是否更有效率,还是我的调试器只是优化了整个过程?(不要担心语法/错误,我在SO中键入了它,不知道它是否可以编译,这是我遵循的原理,我不想这样做是因为int导致我模糊地记得一些关于我使用C#,但是我对跨编程语言的通用答案很感兴趣。


switch(myObject.GetType()){


    case typeof(Car):

        //do something

        break;


    case typeof(Bike):

        //do something

        break;


    case typeof(Unicycle):

        //do something

        break;


    case default:

        break;

}

VS


   Type myType = myObject.GetType();


   if (myType == typeof(Car)){

            //do something

   }


   else if (myType == typeof(Bike)){

            //do something

   }


   else if (myType == typeof(Unicycle)){

            //do something

   }

   else{


   }


慕桂英3389331
浏览 524回答 3
3回答

慕容3067478

调试器使它变得更简单,因为您不想单步执行编译器创建的实际代码。如果该开关包含五个以上的项,则使用查找表或哈希表实现,否则使用if..else实现。看到密切相关的问题是“否则”是否比“ switch()情况”更快?。当然,除C#之外的其他语言或多或少地会不同地实现它,但是切换通常会更有效。
打开App,查看更多内容
随时随地看视频慕课网APP