Menu

  • 博客
  • 关于唯我&博客
  • 唯我DIY
  • 讨论区

Copyright © VIIIO.COM | Theme by Theme in Progress | 基于 WordPress

千里之行,始于足下唯我 - 梦想从此起航

.NET Event和Delegate

2016年4月23日ASP.NET Standard
Views: 1,387

这里说的Event和Delegate指声明类型为相应delegate协议实例变量

1
2
3
4
public delegate string TestDelegate(string msg, int no_one, int no_two);//我称之为协议
 
public event TestDelegate id_event;//Event实例变量
public TestDelegate id;//Delegate实例变量

Event和Delegate的联系:Event是封装过的Delegate

Event和Delegate的区别:

Event本身是私有的委托变量加上两个公共方法,从而避免直接在定义Event的类的外部进行调用,也避免了方法的覆盖(只能通过+=和-=来增加和删除)

Delegate变量可以直接在外部类进行调用,且只能附加一个委托方法,也就是会被覆盖。

它们均可以使用以下方法进行方法添加:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/// <summary>
/// 方法样例
/// </summary>
private string implementDelegate(string msg, int no_one, int no_two)
{
    return string.Format(@"{0}:{1} * {2} = {3}", msg, no_one, no_two, no_one * no_two);
}
 
private void test()
{
    //直接附加
    id_event += implementDelegate;
    //创建委托
    id_event += new TestDelegate(implementDelegate);
    //附加匿名委托
    id_event += delegate (string msg, int no_one, int no_two)
    {
       return "Delegate Success";
    };
    //Lamda表达式附加,本质为匿名委托,写法不同
    id_event += (string msg, int no_one, int no_two) =>
    {
       return "Lamda Success";
    };
}

发表评论或回复 取消回复

邮箱地址不会被公开。

18 − 16 =

近期文章

  • OC UIWindow setRootViewController切换界面引发的内存问题
  • iOS证书、AppId、PP文件之间的关系
  • SVN服务器搭建、备份及多服务器同步方案(Windows)
  • [转]iOS多线程-各种线程锁的简单介绍
  • Mac 下Apache2 配置多虚拟主机

近期评论

  • NARYTHY288954NEYRTHYT发表在《ASP.NET整合Discuz PHP站 并实现用户同步》
  • nym402059flebno发表在《ASP.NET整合Discuz PHP站 并实现用户同步》
  • nem2182758krya发表在《ASP.NET整合Discuz PHP站 并实现用户同步》
  • aresgrb.se发表在《ASP.NET整合Discuz PHP站 并实现用户同步》
  • Vincenturbam发表在《ASP.NET整合Discuz PHP站 并实现用户同步》

分类目录

  • ASP.NET (15)
  • Git (2)
  • HTML (1)
  • iOS (31)
  • Javascript (7)
  • Oracle (8)
  • SQL (3)
  • SQLSERVER (2)
  • SVN (1)
  • 一行代码系列 (5)
  • 微信小程序 (1)
  • 正则表达式 (2)
  • 网站建设 (5)

文章归档

  • 2018年12月 (1)
  • 2018年4月 (1)
  • 2017年12月 (2)
  • 2017年7月 (3)
  • 2017年6月 (1)
  • 2017年4月 (1)
  • 2017年1月 (1)
  • 2016年12月 (3)
  • 2016年10月 (1)
  • 2016年7月 (1)
  • 2016年6月 (1)
  • 2016年5月 (3)
  • 2016年4月 (5)
  • 2016年3月 (4)
  • 2016年2月 (2)
  • 2016年1月 (3)
  • 2015年12月 (11)
  • 2015年11月 (7)
  • 2015年10月 (3)
  • 2015年9月 (1)
  • 2015年8月 (1)
  • 2015年7月 (1)
  • 2015年6月 (1)
  • 2015年5月 (1)
  • 2015年4月 (1)
  • 2014年7月 (1)
  • 2014年6月 (1)
  • 2014年5月 (2)
  • 2014年4月 (2)
  • 2014年3月 (2)
  • 2014年2月 (2)
2025年5月
一 二 三 四 五 六 日
« 12月    
 1234
567891011
12131415161718
19202122232425
262728293031