当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > C#事件机制归纳上

ASP.NET
.net开发实例:绑定到ADO.NET数据源
vb.net中应用 ArrayList 实例
用.net 处理xmlHttp发送异步请求
编写ASP.NET应用程序的十大技巧
完全不使用配置文件构建和使用WCF服务
VB.net2008精彩实例,窗体应用技巧
VB.Net实现Web Service的基础
实用技巧:.Net框架类库中定时器类的使用
ASP.NET MVC:实现我们自己的视图引擎
基于ASP.NET MVC框架开发Web论坛应用程序
用VB.net2008打造你的影音播放器
如何使用.NET实现断点续传功能
如何用.NET技术在线生成网站LOGO
挖掘ADO.NET Entity框架的性能
编写ASP.NET应用程序的十大技巧 (1)
Asp.NET大文件上传开发总结集合
.net开发:如何为程式码加上行号
ASP.NET 中整合JavaScript技巧
浅谈.NET中加密和解密的实现方法
浅析ASP.NET 2.0 Client Callback

ASP.NET 中的 C#事件机制归纳上


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 150 ::
收藏到网摘: n/a

1.委派的实现过程。 首先来看一下委派,委派其实就是方法的传递,并不定义方法的实现。事件其实就是标准化了的委派,为了事件处理过程特制的、稍微专业化一点的组播委派(多点委派)。下面举一个例子,我觉得把委派的例子和事件的例子比较,会比较容易理解。 using System; class Class1 { delegate int MathOp(int i1,int i2); static void Main(string[] args) { MathOp op1=new MathOp(Add); MathOp op2=new MathOp(Multiply); Console.WriteLine(op1(100,200)); Console.WriteLine(op2(100,200)); Console.ReadLine(); } public static int Add(int i1,int i2) { return i1+i2; } public static int Multiply(int i1,int i2) { return i1*i2; } } 首先代码定义了一个委托MathOp,其签名匹配与两个函数Add()和Multiply()的签名(也就是其带的参数类型数量相同): delegate int MathOp(int i1,int i2); Main()中代码首先使用新的委托类型声明一个变量,并且初始化委托变量.注意,声明时的参数只要使用委托传递的函数的函数名,而不加括号: MathOp op1=new MathOp(Add); (或为MathOp op1=new MathOp(Multiply);) 委托传递的函数的函数体: public static int Add(int i1,int i2) { return i1+i2; } public static int Multiply(int i1,int i2) { return i1*i2; } 然后把委托变量看作是一个函数名,将参数传递给函数。 Console.WriteLine(op1(100,200)); Console.WriteLine(op2(100,200)); 2.事件的实现过程 using System; class Class1 { static void Main(string[] args) { Student s1=new Student(); Student s2=new Student(); s1.RegisterOK +=new Student.DelegateRegisterOkEvent(Student_RegisterOK); s2.RegisterOK +=new Student.DelegateRegisterOkEvent(Student_RegisterOK); s1.Register(); s2.Register(); Console.ReadLine(); } static void Student_RegisterOK() { Console.WriteLine("Hello"); } } class Student { public delegate void DelegateRegisterOkEvent(); public event DelegateRegisterOkEvent RegisterOK; public string Name; public void Register() { Console.WriteLine("Register Method"); RegisterOK(); } } 在Student类中,先声明了委托DelegateRegisterOkEvent(),然后使用event和要使用的委托类型(前面定义的DelegateRegisterOkEvent委托类型)声明事件RegisterOK(可以看作是委托的一个实例。): public delegate void DelegateRegisterOkEvent(); public event DelegateRegisterOkEvent RegisterOK; 然后在Main()函数中,实例化Student类,然后s1.RegisterOK事件委托给了Student_RegisterOK 方法。通过“+=”(加等于)操作符非常容易地为.Net对象中的一个事件添加一个甚至多个响应方法;还可以通过非常简单的“-=”(减等于)操作符取消这些响应方法。 然后,当调用s1.Register()时,事件s1.RegisterOK发生。