4
我有一个字典使用字符串作为键,Action
函数作为值。函数字典没有指定参数
有没有一种方法来定义字典,而不指定每个键的功能的参数?例如,假设我有一个功能foo(int a, string b)
。是否可以分配dict['test'] = foo
?
我很抱歉如果这个问题已被问到 - 我不确定要搜索什么。
我有一个字典使用字符串作为键,Action
函数作为值。函数字典没有指定参数
有没有一种方法来定义字典,而不指定每个键的功能的参数?例如,假设我有一个功能foo(int a, string b)
。是否可以分配dict['test'] = foo
?
我很抱歉如果这个问题已被问到 - 我不确定要搜索什么。
是的,使用Delegate
而不是键入功能。你可以用DynamicInvoke()
来调用它们,参数可以通过一个数组传递。简而言之:
Dictionary<string, Delegate>() _delegates;
void Test1(int a) { }
void Test2(int a, int b) { }
void SetUp() {
_delegates = new Dictionary<string, Delegate>();
_delegates.Add("test1", Test1);
_delegates.Add("test2", Test2);
}
void CallIt(string name, params object[] args) {
_delegates[name].DynamicInvoke(args);
}
尝试:
CallIt("test1", 1);
CallIt("test2", 1, 2);
谢谢你的例子;这是我正在寻找的。 – rookie
,你可以有字典[ “测试”] =(A,B)=> FOO(A,B);但我不确定那是你想要的。目前还不清楚 – Murdock
您是否想在字典中并排存储具有不同参数的函数,或者'dict'总是同质的? '字典<字符串,行动>'应该工作,如果后者(并且在你的情况下有通用参数是有意义的)。 –