这篇文章介绍了c#中事件的用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
事件基于委托,可以为任何一种委托类型提供一种发布\订阅机制。
使用event关键字将一个委托类型定义为事件。
下面通过一个例子介绍事件:
//事件发布类
public class PublishEvent
{
public delegate string Display(string str);
public event Display DisplayEvent;
//客户端代码通过调用这个方法触发事件
public void Shows(string str)
{
if (DisplayEvent != null)
{
DisplayEvent(str);
}
}
}
//事件侦听类,这个类订阅事件
public class Listen1
{
public string MakeAlert(string str)
{
Console.WriteLine(str + "Listen1");
return str + "Listen1";
}
}
public class Listen2
{
public string ShowMsg(string str)
{
Console.WriteLine(str + "Listen2");
return str + "Listen2";
}
}
客户端代码:
class Program
{
static void Main()
{
PublishEvent pe = new PublishEvent();
Listen1 l1 = new Listen1();
Listen2 l2 = new Listen2();
//变量l1和l2订阅了事件
pe.DisplayEvent += l1.MakeAlert;
pe.DisplayEvent += l2.ShowMsg;
//触发事件
pe.Shows("事件");
Console.ReadKey();
}
}
事件就是一个特殊的委托(),它是一个用于事件驱动模型的专用委托.你可以在客户代码中直接调用委托来激发委托指向的函数,而事件不可以,事件的触发只能由服务代码自己触发。也就是说在你的代码里委托你不但可以安排谁是它的调用函数,还可以直接调用它,而事件不能直接调用,只能通过某些操作触发。除此之此,事件拥有委托的所有功能,包括多播特性。即事件可以有多个事件处理函数,委托同样也可以是个多播委托.
事件是封装过的委托实例;委托是类型,事件是实例!
EventHandler<TEventArgs>.NET自带的委托,也用于定义事件。
到此这篇关于c#之事件用法的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持得得之家。
织梦狗教程
本文标题为:c#之事件用法


基础教程推荐
猜你喜欢
- C#获取指定目录下某种格式文件集并备份到指定文件夹 2023-05-30
- C#中 Json 序列化去掉null值的方法 2022-11-18
- C#通过标签软件Bartender的ZPL命令打印条码 2023-05-16
- C#中的Linq to JSON操作详解 2023-06-08
- c# – USING块在网站与Windows窗体中的行为不同 2023-09-20
- C# 解析XML和反序列化的示例 2023-04-14
- Unity 如何获取鼠标停留位置下的物体 2023-04-10
- Unity shader实现高斯模糊效果 2023-01-16
- 实例详解C#实现http不同方法的请求 2022-12-26
- C#调用摄像头实现拍照功能的示例代码 2023-03-09