私人我的理解是,请求是一种可以用方法名调用另一个方法的方便方法,可以简化switch等语句的重复。 最近做项目的时候正好需要委托,所以要学习复习和使用委托。 嗯……本人以前没用过,只是稍微知道一下。 以下是整理好的笔记本。
一.委托的概念
委托是用户自定义的类,它定义了方法的类型。包含一组具有相同参数和返回类型方法的地址列表,在调用委托时将执行此委托列表中的所有方法。
二.委托类型的定义
必须在用于创建变量和类型对象之前声明委托类型。
声明委托类型:
以delegate关键字开头。
2 .返回类型委托类型名称参数列表
Elegatevoidmydel(inta )三.实例
1 )首先编写了控制台程序,并创建了一个简单的实例
namespace func { publicdelegatevoidmydel (; //自定义委托class program { staticvoidmain (string [ ] args ) { MyDel say1=SayHi; mydelsay2=newmydel(Sayhi; say1(; say2(; } static void SayHi () console.writeline('hi ); }}2)扩展实例
namespace func { publicdelegateintmydel (intnum; //自定义委托class program { staticintadd1(inta ) intb=10a; 控制台. writeline (—— add 1—— (); 返回b; }staticintadd2(inta ) { int b=10 - a; 控制台. writeline (—— add 2—— (); 返回b; }staticvoidcalculate(mydelex,int a ) ) varresult=ex ) a; console.writeline(result'n ' ); } staticvoidmain (字符串[ ] args ) calculate ) add 1,1 ); 计算(添加2,10 ); 控制台. read key (; }}结果如下图所示
3http://www.Sina.com/http://www.Sina.com /; 从上面可以看出,调用的方法和委托的返回类型、参数类型必须匹配。
我们可以将委托作为参数传递给封装的方法,并通过委托动态调用方法。
“
把方法当作参数在另一个方法中传递或调用”
=可以使用运算符将方法添加到委托中。
同样,可以使用-=运算符删除方法进行委托。
四.委托的加减运算
namespace func { publicdelegateintmydel (intnum; //自定义委托class program { staticintadd1(inta ) intb=10a; 控制台. writeline (—— add 1—— (); 返回b; }staticintadd2(inta ) { int b=10 - a; 控制台. writeline (—— add 2—— (); 返回b; }staticvoidcalculate(mydelex,int a ) ) varresult=ex ) a; console.writeline(result'n ' ); } staticvoidmain (字符串[ ] args )//calculate ) add 1,1 ); //calculate (添加2,10 ); MyDel myDel=Add1; myDel =Add2; 计算(我的戴尔,10 ); 控制台. read key (; }}结果如下图所示。
中,可能需要返回每个方法的结果。 此方法不适用。 怎样才能得到每个方法的结果呢? 手续又写了。 今天简要介绍了委托的基本概念和使用。