委托和事件
-
委托
- 委托是一个类型安全的函数指针,表示对具有特定参数列表和返回类型的方法的引用(引用类型)
- 使用场景:用于将方法作为参数传递给其他方法,是对方法的多态 例如事件处理程序
- 委托允许将方法作为参数进行传值或者回调方法
- 委托可以链接在一起,多播委托(类似于函数链表),例如一个事件调用多个方法
- 方法不必与委托签名完全匹配(协变)
- 委托使用
- 委托声明和实例化
- 声明方法和委托
- 实例化委托
实例化时是一个对象,因此支持作为实参传递
- 声明方法和委托
- 委托多播(+ - += -=)
- *假设委托存在返回值,默认是返回最后方法的返回值,不会为你的返回值进行计算(只反值不计算)
- *假设委托存在返回值,默认是返回最后方法的返回值,不会为你的返回值进行计算(只反值不计算)
- 委托声明和实例化
-
Action、Func、Predicate
- Action和Func
- Action(不需要返回值),Func(需要返回值)
- Predicate所引用的方法接收一个或者多个泛型参数并且返回一个 bool 值,你可以假定它等价于 Func<T,bool>,Predicate 常用于对 collection 进行一组条件检索。
- Action(不需要返回值),Func(需要返回值)
- Action和Func
-
事件
- 事件是基于委托,为委托提供一种发布/订阅机制,声明事件需要event(特特殊的委托)
- 发布者确定何时引发事件,订阅确定执行何种操作来响应事件
- 一个事件可以有多个订阅,一个订阅可以处理来自几个发布者的多个事件
- 没有订阅者的事件永远不会触发
- 链接: