gpt4 book ai didi

c# - 使用一个委托(delegate)引用多个方法

转载 作者:行者123 更新时间:2023-11-30 19:43:31 29 4
gpt4 key购买 nike

我目前正在打沙委托(delegate)。
在下面的示例中,dd 是否引用了 p.m p.n
我可以在添加 p.n 之后再添加一行来再次运行 p.m 吗?或者我需要再次实现 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;
}
}

最佳答案

是的,在第一次赋值 (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

关于c# - 使用一个委托(delegate)引用多个方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14725149/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com