C#事件和委托的区别

回答·15
最热
最新
  • 1、关键字不一样event /delegate。 2、需要先有委托才能定义事件。 3、事件只能+=或者-=。 4、有匿名委托没有匿名事件。 5、系统有action和func委托,没有事件。 6、控件有eventhandler事件,没有委托。 7、vs中事件有智能提示,委托没有。 8、异步回调就是委托方法。
  • 事件是委托的包装器,防止委托被滥用
  • 事件是委托的实例化,在实例化委托时,委托被当作一个数据类型类型使用。
  • 事件是阉割版的委托, 委托用法是全局通知,全局订阅,全局订阅,在任意地点通知全部注册时间 事件相当于是触发器,在其他类中invoke(参数)通知声明空间。
  • 准确来说是两个重要概念, 委托类似c++的函数指针,指向一个或多个方法,并且可以作为参数传给其他方法作为回调, 而事件是一种特殊的委托,用于类或者对象之间通信,使得某个类或对象能够发布某个事件,其他的类或事件可以订阅使得事件发生时得到通知
  • 委托是把一个方法作为参数带入另一个方法 事件是一种特殊委托
  • 委托更侧重于具体方法的调用,而事件则提供了一种简洁、安全和松耦合的方式来通知其他对象。
  • 事件就是更安全的委托,区别为在外部只能+=和-=。
  • 委托是方法列表即存放方法的一个集合 可以根据反问限定语句来限制其执行的位置。 事件是使用委托的一种特殊方式, 只能在定义的对象内执行,是C#观察模式的一种实现方式
  • 委托本质是通过指针实现的,回调函数,参照c++的回调函数写法就能明白。c#只是进行了一层封装。事件是基于委托,事件能做的事,委托都能做,事件event一般在桌面程序用的多,事件主要封装了一层委托,他只能+=或者-=,实际调用的就是委托的Delegate.Combine() 这个方法