码迷,mamicode.com
首页 > 其他好文 > 详细

委托与事件一:委托初体验

时间:2015-11-08 22:21:46      阅读:235      评论:0      收藏:0      [点我收藏+]

标签:

委托:就是一个能存放符合某种格式(方法签名)的方法指针的容器。指针:专门用来存放内存地址的一种类型。

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(){}不带参数、返回值
}
View Code

 

  技术分享

技术分享
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("委托可以+=方法名");
        }
View Code

编译器的c#代码:如图可见+=和-=也是语法糖。

技术分享

 差点忘了: dgsayhi();实际上是调用了委托的Invoke()方法

委托与事件一:委托初体验

标签:

原文地址:http://www.cnblogs.com/wswbk/p/4948338.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!