委托与事件的区别

委托:

委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性。

事件:

事件本身是一个委托,为了实现广播者/订阅者模型,它只暴露了所需要的委托特性的部分子集(+=/-= 对应Add/Remove方法),防止订阅者之间相互干扰。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在C#中,事件委托都是用于实现事件驱动编程的重要机制。虽然它们在一些方面相似,但是它们的作用和使用方式是不同的。 委托是一种引用类型,它可以存储对一个或多个方法的引用,而这些方法具有相同的参数列表和返回类型。委托可以像方法一样被调用,也可以被用作方法参数或返回值。在事件驱动编程中,委托通常用于实现回调函数,即在事件发生时调用已注册的方法。 事件是一种特殊的委托,它用于通知其他代码某个状态的改变或者某个动作的完成。事件通常由某个对象触发,并且可以被其他对象注册和取消注册。事件的声明和使用方式与委托有很大的相似性,但是事件的底层实现是基于委托的。 下面是一个简单的示例,演示了如何使用委托事件: ``` // 定义一个委托 public delegate void MyDelegate(string message); // 定义一个事件发生器类 public class EventPublisher { public event MyDelegate MyEvent; public void DoSomething() { // 触发事件 if (MyEvent != null) { MyEvent("Something is done."); } } } // 定义一个事件处理器类 public class EventHandler { public void HandleEvent(string message) { Console.WriteLine(message); } } // 使用委托事件 EventPublisher publisher = new EventPublisher(); EventHandler handler = new EventHandler(); publisher.MyEvent += handler.HandleEvent; publisher.DoSomething(); publisher.MyEvent -= handler.HandleEvent; ``` 在上述示例中,委托是用来定义事件处理器的类型,事件是用来通知其他对象某个动作的完成。事件发生器类EventPublisher定义了一个事件MyEvent,当调用DoSomething方法时,会触发MyEvent事件并传递一个字符串参数。事件处理器类EventHandler定义了一个HandleEvent方法,它会在事件发生时被调用。在使用委托事件时,需要先实例化委托事件处理器对象,然后将事件处理器对象注册到事件中,最后触发事件并取消事件处理器的注册。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值