网站建设资讯

NEWS

网站建设资讯

C#委托总结 普通委托、泛型委托、匿名委托(简要汇总)

成都创新互联主营隆林网站建设的网络公司,主营网站建设方案,app开发定制,隆林h5小程序定制开发搭建,隆林网站营销推广欢迎隆林等地区企业咨询

一、概念

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

二、委托的定义使用步骤

第一步声明委托:

publicdelegateintmyDelegate(int a, int b);

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

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

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

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

或者:

myDelegatedel1 =toAdd;

第三步执行委托:

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

第四步写绑定的方法:

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

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

如下:

staticpublicinttoAdd(inta,intb)//参数列表与委托定义必须一致

{

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

}

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

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

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

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

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

此部分内容稍后另一篇笔记详细介绍

四、匿名委托

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

五、委托与线程的关系

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


新闻名称:C#委托总结 普通委托、泛型委托、匿名委托(简要汇总)
本文来源:http://cdweb.net/article/dsoidgh.html