字典表+委托替代switch解決思路
阿新 • • 發佈:2017-11-08
方案 del stat log 分支 spa ont blog 這一
這樣是可以的。
但是比switch要慢,比if也慢。但是這種模式比較適合分支擴展和運行時註入分支邏輯。
屬於消息的一種。從效率上來說與switch和if沒法比,這一點可以自行測試。
------解決方案--------------------
...感覺就是visitor
參考:http://www.jianshu.com/p/8887b3b3e8ba
代碼
namespace 解決Switch { class Program { delegate string func(); static void Main(string[] args) { var dict = new System.Collections.Generic.Dictionary<string, func>(); dict["apple"] = new func(apple); dict["google"] = new func(google); dict["ibm"] = new func(ibm); string cmd; while ("exit" != (cmd = System.Console.ReadLine())) { if (dict.ContainsKey(cmd)) System.Console.WriteLine(dict[cmd]()); } }static string apple() { return "apple()哈哈哈"; } static string google() { return "google()嘻嘻嘻"; } static string ibm() { return "ibm()呵呵呵"; } } }
------解決方案--------------------
這種思路我覺得很好啊,效率比switch更快。switch相當於依次比較的,而字典表只需要比較一次(查一次hash表)更重要的是容易擴展。
------解決方案--------------------
貌似只有在枚舉上才用switch
switch必須是const,除了枚舉,沒什麽寫死了的
並且枚舉switch的代碼可以自動生成
------解決方案--------------------
這樣是可以的。
但是比switch要慢,比if也慢。但是這種模式比較適合分支擴展和運行時註入分支邏輯。
屬於消息的一種。從效率上來說與switch和if沒法比,這一點可以自行測試。
------解決方案--------------------
...感覺就是visitor
字典表+委托替代switch解決思路