我现在是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)
是的,在第一次赋值(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)
| 归档时间: |
|
| 查看次数: |
7554 次 |
| 最近记录: |