为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

大话西游666 2019-12-21 11:05:55
可以说我可以选择根据字符串比较来确定要采用的代码路径,也可以根据类型来确定:哪个更快,为什么?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语句中不允许变量?警告:我正在优化。这种方法被称为许多在应用程序的缓慢一部分倍。
查看完整描述

3 回答

?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超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()


查看完整回答
反对 回复 2019-12-21
  • 3 回答
  • 0 关注
  • 669 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信