一、 委托

1.1 委托定义

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

1.2 委托的使用

  • 一般步骤
  1. 定义委托类型。
  2. 定义一个或多个符合委托类型要求的方法。
  3. 定义委托类型变量。
  4. 经第2步定义的方法引用挂接到第3步定义的变量,以型材一个方法调用列表
  5. 通过委托变量间接调用方法调用列表。
  • 匿名方法方式
  1. 定义一个委托/泛型委托



  2. 利用C#匿名方法特性直接给委托变量赋值







    匿名方法其实就是将方法定义和委托变量赋值两个步骤合在一起。
  • 委托类型可用作方法形参



1.3 委托揭秘

  • 委托的继承树

  • 委托的反编译IL

  • 委托示例

1.4 委托的组合与分解

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

引用多个方法的委托变量称为多路委托

1.5 委托的应用

委托的本质特征就是一对多,一个委托变了对应多个方法。

示例:定时回调

Timer是.Net基类库中提供的定时器对象,它的构造函数接收一个TimerCallBack委托对象,此对象引用一个将被Timer对象定时回调的方法。









1.6 .Net基类库中的委托

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

1.6.1 Action<>

Action<>委托是返回值类型为void的方法。



应用示例:

1.6.2 Func<>

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



应用示例:

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

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

C#特性知识图谱-一、委托的更多相关文章

  1. C#特性知识图谱-二、事件

    C#特性知识图谱-二.事件 二.事件 在事件驱动的软件系统中,符合某种预设条件的情形出现是,一个事件就会被触发. 2.1 事件三要素 事件源:激发事件的对象 事件信息:事件本身说携带的信息 事件响应者 ...

  2. 哈工大知识图谱(Knowledge Graph)课程概述

    一.什么是知识图谱 知识(Knowledge)可以理解为 精炼的数据,知识图谱(Knowledge Graph)即是对知识的图形化表示,本质上是一种大规模语义网络 (semantic network) ...

  3. CCKS 2018 | 最佳论文:南京大学提出DSKG,将多层RNN用于知识图谱补全

    作者:Lingbing Guo.Qingheng Zhang.Weiyi Ge.Wei Hu.Yuzhong Qu 2018 年 8 月 14-17 日,主题为「知识计算与语言理解」的 2018 全国 ...

  4. Redis闲谈(1):构建知识图谱

    场景:Redis面试 (图片来源于网络) 面试官: 我看到你的简历上说你熟练使用Redis,那么你讲一下Redis是干嘛用的? 小明: (心中窃喜,Redis不就是缓存吗?)Redis主要用作缓存,通 ...

  5. 知识图谱学习与实践(4)——通过例句介绍Sparql的使用

    通过例句介绍Sparql的使用 1 简介 SPARQL的定义,是一个递归的定义,为SPARQL Protocal and RDF Query Language,是W3C制定的RDF知识图谱标准查询语言 ...

  6. 知识图谱基础之RDF,RDFS与OWL

    https://blog.csdn.net/u011801161/article/details/78833958 https://blog.csdn.net/baidu_15113429/artic ...

  7. 百度大脑UNIT3.0详解之知识图谱与对话

    如今,越来越多的企业想要在电商客服.法律顾问等领域做一套包含行业知识的智能对话系统,而行业或领域知识的积累.构建.抽取等工作对于企业来说是个不小的难题,百度大脑UNIT3.0推出「我的知识」版块专门为 ...

  8. 知识图谱基础之RDF,RDFS与OWL 2

    https://zhuanlan.zhihu.com/p/32122644 看过之前两篇文章([1](为什么需要知识图谱?什么是知识图谱?——KG的前世今生), [2](语义网络,语义网,链接数据和知 ...

  9. 知识图谱之图数据库Neo4j

    知识图谱中的知识是通过RDF结构来进行表示的,其基本单元是事实.每个事实是一个三元组(S, P, O),在实际系统中,按照存储方式的不同,知识图谱的存储可以分为基于表结构的存储和基于图结构的存储. 基 ...

随机推荐

  1. 记一次《C语言踩内存》问题定位有感

    踩内存问题,个人认为算是比较容易出现但是有很难定位的问题,被踩者轻者功能瘫痪,重者一命呜呼,直接诱发死机.产生踩内存的的原因也比较多样,比较典型的有如下几种: 数组越界访问 字符串越界操作 直接操作野 ...

  2. ubuntu 20.04 发邮件配置

    安装sendmail后,发邮件一直没有成功,因此卸载sendmail后,安装heirloom-mailx. # unbuntu 18.04和20.04移除了heirloom-mailx,需要另外配置软 ...

  3. ABP 极简入门教程(一)

    本示例不讲概念,只讲怎么用,概念性的内容没有比官方文档更清楚的了,我也正在学习,可能理解的地方有不对的欢迎一起交流,但需要您了解以下内容才能看明白 asp.net core Entity Framew ...

  4. Jetpack Compose学习(4)——Image(图片)使用及Coil图片异步加载库使用

    原文地址 Jetpack Compose学习(4)--Image(图片)使用及Coil图片异步加载库使用 | Stars-One的杂货小窝 本篇讲解下关于Image的使用及使用Coil开源库异步加载网 ...

  5. Fastjson反序列化漏洞基础

    Fastjson反序列化漏洞基础 FastJson是alibaba的一款开源JSON解析库,可用于将Java对象转换为其JSON表示形式,也可以用于将JSON字符串转换为等效的Java对象. 0x0 ...

  6. JNDI注入基础

    JNDI注入基础 一.简介 JNDI(The Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API,命名服务 ...

  7. linux主机安全加固-个人经验

    说明:我并没有一个系统的网络安全知识体系,随笔里面提到的内容是个人在从事运维行业这几年中总结出来的一点经验,仅供大家参考. 说到linux主机安全加固,我可以想到的就是三个方向吧,基线整改.访问控制和 ...

  8. Lombok中@Data注解的坑

    开发遇到@Data注解的大坑 如果使用@Data注解,会默认重写hashcode和equals方法 那会遇到什么问题呢? 比如说: @Data public class DataTest { priv ...

  9. JetBrains 系列软件汉化包 2017.3-2018.1

    JetBrains 系列软件汉化包 关键字: Android Studio 3.0-3.1.3 汉化包 CLion 2018.1-2018.2 汉化包 GoLand 2017.3.2-2018.2 汉 ...

  10. 安卓学习记录(四)——体温表APP

    1.新建project file->new->new project,选择Basic Activity 2.在content_main.xml中添加一个List View 1 <Li ...