委托和事件学习
来源:互联网 发布:新版php卡盟排行榜源码 编辑:程序博客网 时间:2024/05/22 10:24
(一)委托:
1、委托是一种特殊的数据类型,用于引用方法;
2、委托可以将方法当作另一个方法的参数进行传递;
3、使用委托的 好处在于可以简化多线程编程的难度;
4、委托是一种类的成员。
以下是相关代码,仅供学习:
例一:
using System;namespace lesson01{public delegate void Something (string name); //声明委托—访问修饰符 delegate 返回值类型 委托名 (参数列表)public class Student{ public void Do (Something something){ something (name); //可以像普通方法、普通类型一样当做方法传递参数 }public Student (string name) { this.name = name; } private string name; } public class Teacher { public void Hungry (){ Student s = new Student ("苏利文"); Something a = new Something (A); //创建委托变量 s.Do (a); } public void A (string name){ Console.WriteLine ("Hello,"+name); } } class MainClass { public static void Main ( string[] args ) { Teacher t = new Teacher () ; t.Hungry () ; } }}
using System;namespace lesson01{//1、声明委托—访问修饰符 delegate 返回值类型 委托名 (参数列表) public delegate int Calculator (int a, int b); class MainClass { //2、根据委托定义一个具体的方法 static int Add (int a, int b){ return a+b; }static int Sub (int a, int b){ return a-b; }public static void Main ( string[] args ) { //3、创建委托对象,关联具体方法 Calculator objCal = new Calculator (Add); //4、通过委托调用方法,而非直接调用 int result = objCal (10,20); Console.WriteLine ("10 + 20 = {0}",result); objCal -= Add; //-表示将委托变量代表的具体方法解绑 objCal += Sub; //+表示重新指向一个新的方法绑定 result = objCal(10,20); Console.WriteLine ("10 - 20 = {0}",result); Console.ReadLine (); } }
}
(二)事件:
1、event和delegate的关系可以看成是字段和属性的关系;
2、事件弥补了委托无法封装的缺点,即想要深入理解事件,那么对于委托的理解一定要深刻;
3、事件处理顺序:定义事件、订阅事件、引发事件;
4、事件借助委托来实现。
以下是相关代码,仅供学习:
using System; namespace Lesson01{ public delegate void Something (string name); public class Student{ public event Something something; //使用event关键字调用委托 public void Do () { something (name) ; } public Student (string name){ this.name = name; } private string name; } public class Teacher { public void Hungry () { Student s = new Student ("苏利文") ; s.something += new Something (A); //使用 event 后不能直接给委托赋值,必须使用+=绑定、-=解除绑定 s.Do (); //使用 event 后不能够在Student外调用委托 ,即限定了delegate只能在定义的类中被调用 } public void A (string name){ Console.WriteLine ("Hello,"+name); } } class MainClass { public static void Main ( string[] args ){ Teacher t = new Teacher () ; t.Hungry () ; } } }
阅读全文
0 0
- 事件和委托学习
- 委托和事件学习
- 委托和事件实例学习
- 委托和事件学习总结
- 学习总结--委托和事件
- 委托和事件学习笔记
- 委托和事件的学习
- 2010.4.9 委托和事件学习
- C#中的委托和事件(转载学习)
- 轻松学习C#委托和事件
- C#学习笔记19-委托和事件
- c# 委托和委托事件
- 委托和事件
- 委托和事件
- 委托和事件
- 委托和事件
- 委托和事件
- 事件和委托
- 【kong系列十】之IP黑白名单ip-restriction限制插件
- 全排列及相关扩展算法(六)——全排列最蛋疼的算法:邻位对换法
- mybatis详解——properties以及别名定义
- Windows消息:怎样使用RegisterWindowMessage注册消息
- SSM框架的流程学习笔记以及每一步容易出错的地方
- 委托和事件学习
- 二叉搜索树的Java实现
- centos安装nginx
- 二分查找总结
- android MPchart 折现图只有一个点不显示问题
- 博弈——sg函数实现和讲解
- centos X64下安装php5.5.6
- iOS之《Effective Objective-C 2.0》读书笔记(9)
- Spring boot之代码规范书写