可以說我可以選擇根據(jù)字符串比較來確定要采用的代碼路徑,也可以根據(jù)類型來確定:哪個更快,為什么?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語句對于具體情況視作具體問題。例如,它不允許您使用變量,而只能使用常量,這些常量將被移至主程序集。我認(rèn)為它有此限制是因為它正在執(zhí)行一些時髦的操作。如果僅翻譯為elseifs(如一位發(fā)布者所評論),那么為什么在case語句中不允許變量?警告:我正在優(yōu)化。這種方法被稱為許多在應(yīng)用程序的緩慢一部分倍。
3 回答

泛舟湖上清波郎朗
TA貢獻(xiàn)1818條經(jīng)驗 獲得超3個贊
首先,您要比較蘋果和橙子。您首先需要比較啟用類型與啟用字符串,然后比較類型與啟用字符串,然后比較獲勝者。
其次,這是OO設(shè)計的目的。在支持OO的語言中,打開類型(任何類型)是一種代碼味道,表明設(shè)計不良。解決方案是使用抽象或虛擬方法(或類似的構(gòu)造,取決于您的語言)從通用基礎(chǔ)中得出
例如。
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
}
}
然后,您無需調(diào)用switch語句,而只需調(diào)用childNode.Action()
- 3 回答
- 0 關(guān)注
- 750 瀏覽
添加回答
舉報
0/150
提交
取消