C#-委托与事件
2016-04-09 11:41
344 查看
/* 委托示例。 */ using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication2 { public delegate void mydel(string name); //委托调用,仅仅要求方法的参数类型和返回类型与委托的参数类型和返回类型相匹配。 class Program { static void Main(string[] args) { mydel d = new mydel(MyClass.A); d("Jack"); Console.ReadKey(); } } public class MyClass { public static void A(string name) { Console.WriteLine("Hi," + name); } } }
运行结果:
Hi,Jack
注意:
委托的使用步骤:
1、在类内定义方法;
2、在任何类的外部声明一个委托,委托的参数形式及返回类型一定要和委托的方法的参数形式和返回类型一致; [修饰符] delegate 返回类型 委托名(参数列表);
3、创建委托对象; 委托名 委托对象=new 委托名(关联方法名);
4、调用委托。
/* 委托多播。 一般通过“+”或“-”运算符实现多播的增加或减少。 */ using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication2 { delegate void Delegt(int x,int y); class Program { static void Main(string[] args) { Delegt d = new Delegt(MyClass.Sum); Test t = new Test(); d += new Delegt(t.Sub); d(2, 3); Console.ReadKey(); } } public class MyClass { public static void Sum(int a,int b) { Console.WriteLine(a+b); } } public class Test { public void Sub(int a, int b) { Console.WriteLine(a - b); } } }
运行结果:
5
-1
<pre name="code" class="csharp">/* 用事件处理机制实现当发生下雨事件时,足球赛、交通警察给出友情提示的事件处理。 */ using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication2 { public delegate void RainHandler(); //声明委托 class Sky { public event RainHandler Rain; //委托与事件绑定 public void OnRain() { Rain(); } //定义下雨时触发事件 } class FootballPlay { public static void Cancel() { Console.WriteLine("启动取消比赛流程..."); } } class Police { public static void Notify() { Console.WriteLine("下雨天请谨慎驾驶..."); } } class Program { static void Main(string[] args) { Sky sky = new Sky(); sky.Rain += new RainHandler(FootballPlay.Cancel); //注册足球赛暂停 sky.Rain+=new RainHandler(Police.Notify); //注册警察提示 sky.OnRain(); //启动下雨 Console.ReadKey(); } } } /* 事件过程: * 1.定义事件处理方法; * 2.创建或声明一个委托实例; * 3.创建一个定义事件类; * (1)与委托关联的事件; * (2)定义事件的触发方法; * 4.事件注册; * 5.使用事件。 */
运行结果:
启动取消比赛流程...
下雨天请谨慎驾驶...
相关文章推荐
- c#调用COM组件
- C#实现把指定数据写入串口
- C#动态创建button的方法
- C#中抽象方法与虚拟方法的区别
- c#中虚函数的相关使用方法
- C#实现给图片加水印的方法
- C#使用加边法计算行列式的值
- C#实现多线程的同步方法实例分析
- C#中尾递归的使用、优化及编译器优化
- C#中的delegate委托类型基本学习教程
- C#实现子窗体与父窗体通信方法实例总结
- C#通用邮件发送类分享
- 举例讲解C#中自动实现的属性
- C#中this的用法集锦
- C#数据结构之顺序表(SeqList)实例详解
- C#.NET获取拨号连接的宽带连接方法
- C#异步绑定数据实现方法
- C#实现AddRange为数组添加多个元素的方法
- C#中Equality和Identity浅析
- C#比较二个数组并找出相同或不同元素的方法