草叶睡蜢

导航

C#特性知识图谱-二、委托

二、 委托

2.1 委托定义

委托可以看成是一个方法的容器,将某一具体的方法装入后就可以把它当成方法一样调用。一个委托类型的变量可以引用任何一个满足其要求的方法。委托类似于C语言中的函数指针,但并不完全相同。

2.2 委托的使用

  • 一般步骤
  1. 定义委托类型。
  2. 定义一个或多个符合委托类型要求的方法。
  3. 定义委托类型变量。
  4. 经第2步定义的方法引用挂接到第3步定义的变量,以型材一个方法调用列表
  5. 通过委托变量间接调用方法调用列表。
  • 匿名方法方式
  1. 定义一个委托/泛型委托
    image
    image
  2. 利用C#匿名方法特性直接给委托变量赋值
    image
    image
    image
    匿名方法其实就是将方法定义和委托变量赋值两个步骤合在一起。
  • 委托类型可用作方法形参
    image
    image

2.3 委托揭秘

  • 委托的继承树
    image
  • 委托的反编译IL
    image
  • 委托示例
    image

2.4 委托的组合与分解

委托变量的运算符+=/-=,使用它可以动态的移除某个方法的引用。
引用多个方法的委托变量称为多路委托
image

2.5 委托的应用

委托的本质特征就是一对多,一个委托变了对应多个方法。
示例:定时回调
Timer是.Net基类库中提供的定时器对象,它的构造函数接收一个TimerCallBack委托对象,此对象引用一个将被Timer对象定时回调的方法。
image
image
image
image
image

2.6 .Net基类库中的委托

.Net基类库中针对在实际开发中最常用的情形提供了几个预定义好的委托,方便软件工程师直接使用。

2.6.1 Action<>

Action<>委托是返回值类型为void的方法。
image
应用示例:
image

2.6.2 Func<>

Func<>委托的最后一个参数是委托所接收方法的返回值,前面的参数(如果存在)就是委托所接收方法的形参。
image
应用示例:
image

强调:.Net平台上的许多技术都用到委托,掌握委托是.Net程序员的基本要求。

提示:本学习笔记所有内容是基于金旭亮老师《面向对象软件开发实践》相关课程进行总结形成,如想学习相关课程请点击响应的链接进入。

posted on 2021-10-21 11:10  草叶睡蜢  阅读(113)  评论(0编辑  收藏  举报