tnblog
首页
视频
资源
登录

C#委托与事件

4914人阅读 2018/12/21 15:43 总访问:36136 评论:0 收藏:0 手机
分类: C#

1.什么是委托?

  委托在C#里的意义和在现实里差不多,从字面意思理解即可。举个例子:领导委托小张去传递个文件,这就是委托。

  而在C#中同样是这样的道理。只是整个动作中有两个对象,施加委托者和委托承担者是两个对象而不是人而已。

  委托的代码写法:

 public delegate void MessageManager();

2.举例说话

  举个例子,某公司领导Manager有件关于代码处理的工作(Coding)需要委托个下属小张(MrZhang)去做。

  a.下面看领导(Manager)和小张(MrZhang)的内部动作代码,下面是

 public delegate void MessageManager();

 上面是施加委托者的方法代码。

  b.下面看小张(MrZhang)的内部代码:

public class MrZhang
    {
       public static void Coding()
        {
            MessageBox.Show("小张Coding已完成");
        }
}

 小张本身含有能完成Coding工作的能力。

  c.下面看委托部分了,领导如何委托给小张。

   MessageManager Manager = new MessageManager(MrZhang.Coding);
         Manager();

 MessageManager Manager = new MessageManager(MrZhang.Coding);

  这是委托的具体动作,要做的动作是Coding,而这件事儿委托给MrZhang来做了。

  1.委托的方法必须要加上,因为委托的构造函数是不为空的。

  2.委托的参数和返回类型,都要和你要具体委托的方法要一致

  然后开始执行Manager();

  d.整体代码如下,读者可以复制到工程尝试下:

public class MainWindow
{ 
    delegate void MessageManager();       
    public MainWindow()
   {
            InitializeComponent();
            MessageManager Manager = new MessageManager(MrZhang.Coding);
            Manager();
    }
}

    public class MrZhang
   {  public static void Coding()
     {
        MessageBox.Show("小张Coding已完成");
      }
    }

 e.委托事件可以同时委托给多个对象,如下:

public MainWindow()
{
            InitializeComponent();
            MessageManager Manager = new MessageManager(MrZhang.Coding);  //通过+=绑定委托
            Manager += new MessageManager(MrLiu.Coding);
            Manager();  //通过-=解绑
      Manager -= new MessageManager(MrLiu.Coding);

}


评价
如果帅也是一种错,那我宁愿一错再错。。。。
排名
6
文章
6
粉丝
16
评论
8
{{item.articleTitle}}
{{item.blogName}} : {{item.content}}
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2024TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
欢迎加群交流技术