什么更快,打开字符串或其他类型?

可以说我可以选择根据字符串比较来确定要采用的代码路径,也可以根据类型来确定:


哪个更快,为什么?


switch(childNode.Name)

{

    case "Bob":

      break;

    case "Jill":

      break;

    case "Marko":

      break;

}


if(childNode is Bob)

{

}

elseif(childNode is Jill)

{

}

else if(childNode is Marko)

{

}

更新:我问这的主要原因是因为switch语句对于具体情况视作具体问题。例如,它不允许您使用变量,而只能使用常量,这些常量将被移至主程序集。我认为它有此限制是因为它正在执行一些时髦的操作。如果仅翻译为elseifs(如一位发布者所评论),那么为什么在case语句中不允许变量?


警告:我正在优化。这种方法被称为许多在应用程序的缓慢一部分倍。


大话西游666
浏览 673回答 3
3回答

泛舟湖上清波郎朗

首先,您要比较苹果和橙子。您首先需要比较启用类型与启用字符串,然后比较类型与启用字符串,然后比较获胜者。其次,这是OO设计的目的。在支持OO的语言中,打开类型(任何类型)是一种代码味道,表明设计不良。解决方案是使用抽象或虚拟方法(或类似的构造,取决于您的语言)从通用基础中得出例如。class Node{    public virtual void Action()    {        // Perform default action    }}class Bob : Node{    public override void Action()    {        // Perform action for Bill    }}class Jill : Node{    public override void Action()    {        // Perform action for Jill    }}然后,您无需调用switch语句,而只需调用childNode.Action()
打开App,查看更多内容
随时随地看视频慕课网APP