重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
成都创新互联主营隆林网站建设的网络公司,主营网站建设方案,app开发定制,隆林h5小程序定制开发搭建,隆林网站营销推广欢迎隆林等地区企业咨询
一、概念
委托的本质也是一种类型,类似于Class这样。作用是将一个方法作为参数传递给另一个方法,关键字是delegate
二、委托的定义使用步骤
第一步声明委托:
publicdelegateintmyDelegate(int a, int b);
1、声明一个委托类型,可以用访问修饰符修饰public、private等,要有delegate关键字,可以有返回值和参数
2、委托所指向的函数必须跟委托具有相同的签名,即相同的参数列表和返回值类型
第二步实例化委托并绑定方法:
myDelegatedel1=newmyDelegate( toAdd );//只写方法名,不带括号和参数列表
或者:
myDelegatedel1 =toAdd;
第三步执行委托:
del1( 3, 4);//括号为参数列表
第四步写绑定的方法:
1、方法必须为static静态方法
2、方法必须有和所绑定委托一致的签名,即相同的参数列表和返回值类型
如下:
staticpublicinttoAdd(inta,intb)//参数列表与委托定义必须一致
{
returna + b;//返回类型与委托定义必须一致
}
三、泛型委托(微软内置委托)
实际上微软已定义好一套泛型委托供我们使用,以免繁琐重复定义,它们分别是Action,Func和Predicate
Action:此委托绑定的方法不能有返回值,方法可以有至多16个参数;
Func:此委托绑定的方法可以有返回值。方法可以有至多16个参数;
Predicate:此委托返回值为布尔型,方法只能又一个参数;
此部分内容稍后另一篇笔记详细介绍
四、匿名委托
可以理解为省略了方法定义这步来调用委托。即没有函数名,直接方法体。其中还可以使用lambda表达式来进一步简化代码量和提高执行效率
五、委托与线程的关系
委托与线程的关系就是没有关系。很多初学者容易把委托理解为启动新线程的一种方式,实际上他们之间没有关系。比如在主线程里调用开始执行一个委托,则主线程就会进入这个委托进行执行,只到委托中的代码执行完毕再返回主线程继续执行后面的代码。