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'總是同質的? '字典<字符串,行動>'應該工作,如果後者(並且在你的情況下有通用參數是有意義的)。 –