从数据结构来讲,委托是和类一样是一种用户自定义类型。
委托是方法的抽象,它存储的就是一系列具有相同签名和返回回类型的方法的地址。调用委托的时候,委托包含的所有方法将被执行。
委托是类型,就好像类是类型一样。与类一样,委托类型必须在被用来创建变量以及类型对象之前声明。
委托的声明原型是
delegate<函数返回类型><委托名> (<函数参数>)
例子:public delegate void mydelegate(int number);//定义了一个委托mydelegate,它可以注册返回void类型且有一个int作为参数的函数
委托实例化的原型是
<委托类型> <实例化名>=new <委托类型>(<注册函数>)
例子:mydelegat相对偏差e _mydelegate=new mydelegate(checkmod);//用函数checkm饱和碳酸氢钠od实例化上面的mydelegate 委托为_mydelegate
<委托类型> <实例化名>=delegate(<函数参数>){函数体};
委托也支持泛型的使用
泛型委托原型:
delegate<t1><委托名><t1,t2,t3…> (t1 t1,t2 t2,t3 t3…)
例如:delegate t2 delegatedemo<t1,t2>(t1 t);//定义有两个泛型(t1,t2)的委托,t2作为委托函数返回类型,t1作为委托函数参数类型
c#共有3种内置泛型委托
实例化委托时必须将一个匹配函数注册到委托上来实例化一个委托对象,但是一个实例化委托不仅可以注册一个函一个美丽的梦数还可以注册多个函数,注册多个函数后,在执行委托的时候会根据注册函数的注册先后顺序依次执行每一个注册函数。
函数注册委托的原型:
<委托类型> <实例化名>+=new <委托类型>(<注册函数>)
例如:mydelegate _mydelegate+=new mydelegate(checkmod);//将函数checkmod注册到委托实例_checkdelegate上
在.net 2.0开始可以直接将匹配的函数注册到实例化委托:
<委托类型> <实例化名>+=<注册函数>
例如:mydelegate _mydelegate+=checkmod;//将函数checkmod注册到委托实例_mydelegate上
注意:委托必须先实例化以后,才能使用+=注册其他方法。如果对注册了函数的委托实例从新使用=号赋值,相当于是重新实例化了委托,之前在上面注册先进党支部的函数和委托实例之间也不再产生任何关系。
有+=注册函数到委托祈祷爱情,也有-=解除注册
例如:mydelegate _mydelegate-=checkmod;
如果在委托注册了多个函数后,如果委托有返回值,那么调用委托时,返回的将是最后一个注册函数的返回值。
到此这篇关于c#委托用法的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持www.887551.com。
本文发布于:2023-04-05 21:41:37,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/590654df0284c329e3fa88d55e0d5eed.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:C#委托用法详解.doc
本文 PDF 下载地址:C#委托用法详解.pdf
留言与评论(共有 0 条评论) |