亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

什么更快,打開字符串或其他類型?

什么更快,打開字符串或其他類型?

大話西游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 關注
  • 753 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號