C#代表(delegate)和事件(event)
来源:互联网 发布:淘宝网换货预约快递 编辑:程序博客网 时间:2024/05/20 02:53
代表(delegate):
它是C#语言里面的函数指针,代表可以指向某一个函数,在运行的时候调用这个函数的实现。下面来看看它的实现步骤:
- 声明一个delegate对象。
- 实现和delegate具有相同参数和返回值的函数实现(可以是静态和非静态的)。
- 产生一个delegate对象的时候,把你刚刚实现的函数作为参数传给他的构造函数。
请看下面例子:源码下载
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace DelegateDemo{ public delegate void MyDelegate(string mydelegate); //声明一个delegate对象 public class TestClass { //实现有相同参数和返回值的函数 public void HelloDelegate(string mydelegate) { Console.WriteLine(mydelegate); } //实现有相同参数和返回值的静态函数 public static void HelloStaticDelegate(string mystaticdelegate) { Console.WriteLine(mystaticdelegate); } } class Program { static void Main(string[] args) { TestClass testClass = new TestClass(); MyDelegate mydelegate = new MyDelegate(testClass.HelloDelegate); //产生delegate对象 mydelegate("Hello delegate"); MyDelegate myStaticDelegate = new MyDelegate(TestClass.HelloStaticDelegate); myStaticDelegate("Hello static delegate"); Console.ReadKey(); } }}
事件(event):
让我通过一个例子来模拟事件的整个过程:
- 创建一个MyButton类,它里面有一个Click 事件。
- 创建一个MyForm类,他里面有一个我们上面定义的MyButton类。
- 要求当我们用户单击MyButton类的时候MyForm类要对他进行处理,输出一条信息“我知道你被单击了”
请看下面例子:源码下载
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace DelegateAndEventDemo{ public delegate void ClickEventHandler(object sender, EventArgs e); //声明一个代理 public class MyButton { public event ClickEventHandler ClickEvent; //声明一个事件 public void Click() { if (ClickEvent != null) { Console.WriteLine("MyButton:我被单击了"); ClickEvent(this, null); } } } public class MyForm { public MyButton myButton = new MyButton(); public MyForm() { myButton.ClickEvent += new ClickEventHandler(OnClickEvent); } void OnClickEvent(object sender, EventArgs e) { Console.WriteLine("MyForm:我知道你被单击了"); } } class Program { static void Main(string[] args) { MyForm form = new MyForm(); form.myButton.Click(); Console.ReadKey(); } }}
Note:public delegate void ClickEventHandler(object sender, EventArgs e);这是事件委托标准的声明方法,其实在参数里面我们可以不传,也可以是其他类型的。但是最好还是使用上面的声明方法,你可以继承EventArgs,来包装你要传送的其他任何参数。
- C#代表(delegate)和事件(event)
- C#代表(delegate)和事件(event)
- C#:代表(delegate)和事件(event)
- C#:代表(delegate)和事件(event)
- C#:代表(delegate)和事件(event)
- C#:代表(delegate)和事件(event)
- C#:代表(delegate)和事件(event)
- C#:代表(delegate)和事件(event) (转)
- C#:代表(delegate)和事件(event) (转)
- C#:代表(delegate)和事件(event) 【转】
- C#:代表(delegate)和事件(event) (转)
- C#:代表(delegate)和事件(event) (转)
- C#:代表(delegate)和事件(event) (转)
- C#:代表(delegate)和事件(event) (转)
- C#:代表(delegate)和事件(event) (转)
- c# event(事件)和delegate(委托)
- c#中的delegate(委托)和event(事件)
- c#中的delegate(委托)和event(事件)
- C#线程池
- java 基础
- memcached常见命令
- 金融博客汇总
- windows远程连接到Linux
- C#代表(delegate)和事件(event)
- VBS脚本常用经典代码收集
- C# 反射机制
- 频繁用电脑打字 武汉大三女生求职"提笔忘字"
- C语言malloc\free
- 天气插件
- (转)一种字符串转化为16进制显示的算法
- 如何调用WebService
- ramdisk.img system.img userdata.img的介绍和使用