如何在List中存储代理

Ani*_*jee 13 .net c# generics lambda delegates

如何将委托(命名,匿名,lambda)存储在通用列表中?基本上我正在尝试构建一个委托字典,从中我可以使用密钥访问存储的委托并执行它并按需返回值.是否可以在C#4中完成?有什么想法来实现它吗?注意:异类列表更适合存储任何类型的委托.

Pet*_*ete 19

难道System.Collections.Generic.Dictionary<string, System.Delegate>还不够?

  • @Anindya Chatterjee:是的,你可以:`dic.Add("action",new Action(()=> Console.WriteLine("action called!"))); (9认同)

Tan*_*irK 9

嗯,这是一个简单的例子:

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);
    }
}
Run Code Online (Sandbox Code Playgroud)