C#之委托、事件、lambda
来源:互联网 发布:js判断是否为身份证号 编辑:程序博客网 时间:2024/06/06 04:17
委托
委托是什么?
委托是一种封装方法的特殊机制,可以帮助程序员更灵活的调用相应的方法。
委托的使用
委托是一个可以引用方法的对象,所以在创建委托时,实际创建的是一个存储方法引用的对象。在程序运行期间,同一个委托能够用于调用不同的方法,只要改变它引用的方法就可以。所以,委托调用的方法不是在编译时确定的,而是在运行的时候确定的。
委托的声明
<span style="font-family:Microsoft YaHei;font-size:18px;">public delegate void DelegateClass()</span>
委托的使用方法
(1)DelegateClass dc1=new DelegateClass(Program.Fangfa1);
(2)DelegateClass dc2=new DelegateClass(Fangfa1);
(3)DelegateClass dc3=Fangfa1;
(4)Aclass ac=new Aclass();
DelegateClass dc4=new DelegateClass(ac.Fangfa2);
多播委托
多播委托是指允许创建方法的调用列表或者链表的能力。当调用多播委托时,这些方法均会自动执行。如果委托具有返回值,则将列表中最后一个方法的返回值用做整个委托调用的返回值。方法链表的创建:首先实例化一个委托,然后使用“+”或“+=”运算符为链表添加方法。在移除一个方法的时候,可以使用“-”或“-=”运算符。
<span style="font-family:Microsoft YaHei;font-size:18px;">public delegate void StrOp(ref string str)StrOp strop;StrOp op1=Hanshu1;StrOp op2=Hanshu2;strop=op1;//移除方法1,添加方法2strop-=op1;strop+=op2;</span>
事件
事件构建在委托的基础上,事件是一种信号机制,它在某些操作发生时自动地发出通知。事件定义为对象发送的消息,发信号通知操作的发生。
声明事件
public event AbcDelegate Abcevent;
AbcDelegate是委托名称, Abcevent;是事件名称
使用事件
(1)订阅事件
eventname += delegatename
eventname:事件名称
delegatename:方法名称
(2)取消订阅事件
eventname -= delegatename
lambda
lambda用于创建匿名方法
表达式:param=>expr
param(参数)
expr(表达式)
<span style="font-family:Microsoft YaHei;font-size:18px;">public delegate int Adelegate(int abm)class Program{ static void Main(string[] args) { Adelegate a=count=>count+5; int x=0; for(int i=0;i<10;i++) { x=a(x); Console.WriteLine(x); } Console.ReadLine(); }}</span>
事件和lambda匿名方法都是建立在委托基础上的,都是委托对象实现的。
- C#之委托、事件、lambda
- c# 委托、事件、lambda表达式
- C#委托/Lambda表达式/事件
- C#高级编程之委托、lambda表达式和事件
- c#委托事件与lambda (整理)
- C# 委托 事件 匿名函数 Lambda表达式
- c#之事件委托
- 【转】【UNITY3D 游戏开发之七】C# 中的委托、事件、匿名函数、Lambda 表达式
- 【转】【UNITY3D 游戏开发之七】C# 中的委托、事件、匿名函数、Lambda 表达式
- 【UNITY3D 游戏开发之七】C# 中的委托、事件、匿名函数、Lambda 表达式
- c#之委托、匿名方法、Lambda表达式
- C#之委托和事件
- C#之委托与事件
- C#之委托与事件
- C#之委托和事件
- 深入解析C# 委托事件和Lambda表达式
- C#利用lambda实现委托事件的挂接
- C#利用lambda实现委托事件的挂接
- JSP/Servlet程序设计(入门书籍)
- APIO2016总结
- 我的c\c++之旅(十)——逆-中序表达式
- Java运算符
- JavaWeb初体验
- C#之委托、事件、lambda
- Python发邮件如何设置多人接收
- 开博啦啦啦啦
- javascript自动适应的iframe高度
- Linux入门使用-3
- URAL 2040 Palindromes and Super Abilities 2(回文树)
- iOS使用Reveal分析他人app界面
- Java 随机生成16进制颜色
- 晶体管三种接法的电压电流放大倍数