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

打印 上一主题 下一主题

主题 1004|帖子 1004|积分 3012

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
 

一、概念
委托的本质也是一种类型,类似于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表达式来进一步简化代码量和提高执行效率
 
五、委托与线程的关系
委托与线程的关系就是没有关系。很多初学者容易把委托理解为启动新线程的一种方式,实际上他们之间没有关系。比如在主线程里调用开始执行一个委托,则主线程就会进入这个委托进行执行,只到委托中的代码执行完毕再返回主线程继续执行后面的代码。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

花瓣小跑

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表