使用一个委托引用多个方法

why*_*heq 2 c# delegates

我现在是sandpitting代表.
在以下示例中确实dd参考p.m p.n
我可以p.m在添加后添加另一行再次运行p.n吗?或者我需要d dd = p.m;再次实施?

class Program
{
    private delegate int d(int x);

    static void Main(string[] args)
    {
        Program p;
        p = new Program();

        d dd = p.m;//d dd = new d(p.m);
        Console.WriteLine(dd(3).ToString());

        dd += p.n;//dd += new d(p.n);
        Console.WriteLine(dd(3).ToString());

        //<<is there now a quick way to run p.m ?

        Console.WriteLine("press [enter] to exit");
        Console.ReadLine();
    }

    private int m(int y)
    {
        return y * y;
    }
    private int n(int y)
    {
        return y * y - 10;
    }
}
Run Code Online (Sandbox Code Playgroud)

dar*_*yal 6

是的,在第一次赋值(d dd = this.m;)之后,所有使用的赋值+=也将被调用.

您可以删除一个方法,使用-=,参考以下示例;

d dd = p.m;//d dd = new d(p.m);
Console.WriteLine(dd(3).ToString()); //calls p.m

dd += p.n;//dd += new d(p.n);
Console.WriteLine(dd(3).ToString()); //calls boths p.m and p.n

dd -= p.n;
Console.WriteLine(dd(3).ToString()); // only calls p.m
Run Code Online (Sandbox Code Playgroud)