如何用字典将字符串映射到方法

本文关键字:映射 方法 字符串 何用 字典 | 更新日期: 2023-09-27 17:52:55

我有一些代码看起来像这样:

switch(SomeString)
{
   case "Value1":
        MethodA();
        break;
   case "Value2":
        MethodB();
        break;
   ... 40 other cases
}

我如何使用<string, method>的字典重写这段代码,以便例如键将是"Value1"值是MethodA()我写的是"执行名字是键SomeString"值的函数。请注意,所有的方法都不接受参数,也没有任何返回值。

如何用字典将字符串映射到方法

你可以这样做:

var actions = new Dictionary<string, Action>()
{
    { "Value1", () => MethodA() },
    { "Value2", () => MethodB() },
};

你可以这样调用:

actions["Value1"]();

现在你可以简化成这样:

var actions = new Dictionary<string, Action>()
{
    { "Value1", MethodA },
    { "Value2", MethodB },
};

但是我建议使用第一个选项,因为它允许你这样做:

var hello = "Hello, World!";
var actions = new Dictionary<string, Action>()
{
    { "Value1", () => MethodA(42) },
    { "Value2", () => MethodB(hello) },
};

声明你的字典:

Dictionary<string,Action> methodMap = new Dictionary<string,Action>();;

添加条目:

methodMap["Value1"] = MethodA;

执行:

methodMap["Value1"] ();