可以说我可以选择根据字符串比较来确定要采用的代码路径,也可以根据类型来确定:哪个更快,为什么?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()
添加回答
举报
0/150
提交
取消