委托

委托和事件

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