首页 > 编程语言 >C#委托总结 普通委托、泛型委托、匿名委托

C#委托总结 普通委托、泛型委托、匿名委托

时间:2022-10-08 02:11:05浏览次数:51  
标签:委托 C# 绑定 int 参数 泛型 返回值 方法

 

一、概念

委托的本质也是一种类型,类似于Class这样。作用是将一个方法作为参数传递给另一个方法,关键字是delegate

 

二、委托的定义使用步骤

第一步声明委托:

public delegate int myDelegate(int a, int b);

1、声明一个委托类型,可以用访问修饰符修饰public、private等,要有delegate关键字,可以有返回值和参数

2、委托所指向的函数必须跟委托具有相同的签名,即相同的参数列表和返回值类型

第二步实例化委托并绑定方法:

myDelegate del1=new myDelegate( toAdd );//只写方法名,不带括号和参数列表

或者:

myDelegate del1 =toAdd;

第三步执行委托:

del1( 3 , 4 );//括号为参数列表

第四步写绑定的方法:

1、方法必须为static静态方法

2、方法必须有和所绑定委托一致的签名,即相同的参数列表和返回值类型

如下:

static public int toAdd(int a, int b)//参数列表与委托定义必须一致

        { 

return a + b;//返回类型与委托定义必须一致

        }

 

三、泛型委托(微软内置委托)

实际上微软已定义好一套泛型委托供我们使用,以免繁琐重复定义,它们分别是Action,Func和Predicate

Action: 此委托绑定的方法不能有返回值,方法可以有至多16个参数;

Func : 此委托绑定的方法可以有返回值。方法可以有至多16个参数;

Predicate: 此委托返回值为布尔型,方法只能又一个参数;

 

四、匿名委托

可以理解为省略了方法定义这步来调用委托。即没有函数名,直接方法体。其中还可以使用lambda表达式来进一步简化代码量和提高执行效率

 

五、委托与线程的关系

委托与线程的关系就是没有关系。很多初学者容易把委托理解为启动新线程的一种方式,实际上他们之间没有关系。比如在主线程里调用开始执行一个委托,则主线程就会进入这个委托进行执行,只到委托中的代码执行完毕再返回主线程继续执行后面的代码。

标签:委托,C#,绑定,int,参数,泛型,返回值,方法
From: https://www.cnblogs.com/arcticfish/p/16767792.html

相关文章

  • CF962F Simple Cycles Edges
    CF962FSimpleCyclesEdges-洛谷|计算机科学教育新生态(luogu.com.cn)在一个无向图中,某个简单环等价于这个图中某个点数等于边数的点双连通分量。为什么不是边双......
  • MVC模式与三层架构
    MVC模式  三层架构   MVC模式与三层架构的关系   ......
  • CentOS 7 修改网卡名(网卡排序)
    1.lspci-0.sh#!/bin/bashlspci|grep'Ethernetcontroller'|awk'{print$1}'|cut-d":"-f12.lspci-f.sh#!/bin/bashlspci-D-n-v|grep"DeviceSer......
  • Centos 7.9 安装 maven-3.8.6
    一、Centos7.9安装maven-3.8.6地址https://maven.apache.org/index.htmlhttps://dlcdn.apache.org/maven/maven-3/3.8.6/binaries/apache-maven-3.8.6-bin.tar.gz......
  • js高级ES6class构造函数与super继承
    <!DOCTYPEhtml><htmllang="en"><head> <metacharset="UTF-8"> <metahttp-equiv="X-UA-Compatible"content="IE=edge"> <metaname="viewport"content="width=......
  • CentOS 7.9 安装 jdk-8u333
    一、CentOS7.9安装jdk8地址https://www.oracle.comhttps://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html 使用Xftp......
  • Python_fifth_chapter_homework
    Python第五章实例和实战作业实例01:使用字符串拼接输出一个关于程序员的笑话代码如下:代码运行结果如下: 实例02:截取身份证号码中的出生日期代码如下:代码运行......
  • CentOS7环境源码安装freeswitch1.10
    操作系统:CentOS7.6_x64   freeswitch版本:1.10.7一、安装步骤1、下载freeswitch源代码wgethttp://files.freeswitch.org/releases/freeswitch/freeswitch-1.1......
  • Python: 执行系统命令的四种方法(os.system、os.popen、commands、subprocess)
    一、os.system方法这个方法是直接调用标准C的system()函数,仅仅在一个子终端运行系统命令,而不能获取命令执行后的返回信息。os.system(cmd)的返回值。如果执行成功,那么会......
  • 《机器人SLAM导航核心技术与实战》第1季:第3章_OpenCV图像处理
    《机器人SLAM导航核心技术与实战》第1季:第3章_OpenCV图像处理视频讲解【第1季】3.第3章_OpenCV图像处理-视频讲解【第1季】3.1.第3章_OpenCV图像处理_认识图像数据......