C#中委托的理解(方便Java的童孩们理解)
定义:委托即Java中的抽象方法,是一个没有实现的方法,没有方法体。要在程序运行的时候才知道它的具体运行的是哪一部分代码(这个定义是从Java角度理解的)
使用:1、定义委托(委托定义的返回类型和形参要与指定的实现函数的返回类型和形参一致)。语法格式如下:
修饰符 delegate返回类型 委托名字(形参);
如下:publicdelegatevoid AMethod();
publicdelegateint call(inta,intt);
publicdelegatefloatmethodName(inta);
2、为委托指定具体的实现函数。即指定这个函数要运行哪段代码。有两种方式为委托指定实现,“new方式”和“赋值方式”。
“new方式”:
委托名字 变量名字 =new委托名字(具体的函数);
//printMessage1为非静态方法,非静态方法要先实例化类
AMethod delegateMethod=newAMethod(newDemo1().printMessage1);
//printMessage1为静态方法,所以不用实例化类
AMethod delegateMethod_static=newAMethod(printMessage2);
“赋值方式”:
AMethoddelegateMethods =newDemo1().printMessage1;
AMethod delegateMethod_static= printMessage2;
3、执行(调用)。
变量名字(形参)
delegateMethod();
delegateMethod_static();
重点:委托可以进行+=和-=的运算,实际意义是为委托指定多个实现函数或取消已指定的函数。指定的多个实现函数将依次执行。使用这个特性实现事件机制
Listen lis+=new B().doSomething;
lis+=new C().doSomething;
lis+=new D().doSomething;
F f = new F();
Lis += f.doSomething;
Lis -= f.doSomething;
到这里只是简单说明一下概念和语法,那它是作什么用的呢,请阅读委托与机制