C#有很多值得学习的地方,这里我们主要介绍C#自定义事件,包括介绍delegate和event专门为C#中事件处理系统提供的等方面。
C#自定义事件
C#语言中有77个关键字,其中delegate和event专门为C#中事件处理系统提供的。
delegate声明定义一种引用类型,该类型可用于将方法用特定的签名封装。委托实例封装静态方法或实例方法。委托大致类似于 C++ 中的函数指针;但是,委托是类型安全和可靠的。
event指定一个事件。在C#的类中存在以下成员:域(Fields)、属性(Properties)、方法(Methods)、索引 (Indexs)、事件(Events),其中事件(Events)成员就是用来声明一个类事件的。在类中声明一个事件成员一般采用如下的语法形式:public event 委托名 事件名。
本程序是UDP通信的UI测试程序,负责接收数据报文,打算要定义简单的C#自定义事件,首先定义委托,然后定义事件类。
在文件Delegate.cs中定义两个委托:
- namespace Communication
- {
- public delegate void DgOnDataRecvFinished(object sender,bool e);//文件接收结束代理。
- public delegate void DgOnDataRecvStart(object sender,bool e);//文件接收结束代理。
- public delegate void DgOnDataArrived(object sender,UdpEventArgs e);//数据抵达代理.
C#自定义事件类UdpEventArgs也位于这个文件中,包括一个消息属性和字节数组.
- public class UdpEventArgs:EventArgs
- {
- string msg="";
- private byte[] recvdata=null;
- public UdpEventArgs(){}
- public string Msg
- {
- set
- {
- msg=value;
- }
- }
- public byte[] RecvData
- {
- set
- {
- recvdata=value;
- }
- get
- {
- return recvdata;
- }
- }
- }
【编辑推荐】