如何将代理(named,anonymous,lambda)存储在通用列表中?基本上我正在尝试构建一个委托字典,从中我可以使用密钥访问存储的委托并执行它并按需返回值。是否可以在C#4中完成?有什么想法来实现它吗? 注意:异类列表更适合存储任何类型的委托。
答案 0 :(得分:17)
System.Collections.Generic.Dictionary<string, System.Delegate>
不够吗?
答案 1 :(得分:8)
嗯,这是一个简单的例子:
class Program
{
public delegate double MethodDelegate( double a );
static void Main()
{
var delList = new List<MethodDelegate> {Foo, FooBar};
Console.WriteLine(delList[0](12.34));
Console.WriteLine(delList[1](16.34));
Console.ReadLine();
}
private static double Foo(double a)
{
return Math.Round(a);
}
private static double FooBar(double a)
{
return Math.Round(a);
}
}
答案 2 :(得分:2)
1-object(of ArrayList)
答案 3 :(得分:0)
Dictionary<string, Func<int, int>> fnDict = new Dictionary<string, Func<int, int>>();
Func<int, int> fn = (a) => a + 1;
fnDict.Add("1", fn);
var re = fnDict["1"](5);
答案 4 :(得分:-1)
List<System.Delegate> something;
something.Add(new Action(()=> DoSomething()));
如果你想自定义key,你可以像上面一样使用Dictionary