标签:
委托:就是一个能存放符合某种格式(方法签名)的方法指针的容器。指针:专门用来存放内存地址的一种类型。
1.定义一个委托:
namespace WindowsFormsApplication1 { //class DGSayhi //{ //} public delegate void Sayhi(); }
用反编译器打开,上述代码实际是个委托类如图:
如图所示:public delegate void Sayhi();实际是个类。类似与:( 当然,不能这么写!)
public class DGSayhi1:MulticastDelegate { public string Invoke(string str){}//带参数、返回值 } public class DGSayhi:MulticastDelegate { public void Invoke(){}不带参数、返回值 }
private void button1_Click(object sender, EventArgs e) { //实例化委托的方法 DGSayhi dgsayhi = new DGSayhi(Sayhi); //向委托添加方法 dgsayhi += SayHi1; //一次性调用所有的方法 dgsayhi(); dgsayhi -= SayHi1; dgsayhi(); } public void Sayhi() { MessageBox.Show("这就是委托!"); } public void SayHi1() { MessageBox.Show("委托可以+=方法名"); }
编译器的c#代码:如图可见+=和-=也是语法糖。
差点忘了: dgsayhi();实际上是调用了委托的Invoke()方法
标签:
原文地址:http://www.cnblogs.com/wswbk/p/4948338.html