我目前正在打沙
委托(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/