首页 > 解决方案 > 有没有一种方法可以通过使用字典和其他代码将 switch 语句替换为操作?

问题描述

这是我的应用程序的内容:

private void saveInDatabase(string key, string value)   

 switch (key)
 {
   case "a":
      def = Helpers.Utils.listOfDoubleFromString(value);
      break;
   case "b":
      chi = int.Parse(value);
      break;
            ....
   }

有没有一种方法可以让我使用这样的字典来决定不同的 case 值会发生什么动作?

   {"a", () => def = Helpers.Utils.listOfDoubleFromString(value)},
   {"b", () => chi = int.Parse(value)},

我的应用程序有大量这样的案例陈述,所以我很想知道是否可以通过设置字典和更多代码来替换它们。

标签: c#

解决方案


我的意思是你几乎明白了:

string def;
int chi;

var map = new Dictionary<string, Action<string>>
{
    ["a"] = value => def = Helpers.Utils.listOfDoubleFromString(value),
    ["b"] = value => chi = int.Parse(value),
};

map[key](value);

推荐阅读