如何用字典将字符串映射到方法
本文关键字:映射 方法 字符串 何用 字典 | 更新日期: 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"] ();