黑马程序员技术交流社区
标题:
委托个人理解
[打印本页]
作者:
徐艳勇
时间:
2012-10-13 13:44
标题:
委托个人理解
什么是委托
首先要知道什么是委托,用最通俗易懂的话来讲,你就可以把委托看成是用来执行方法(函数)的一个东西。
如何使用委托
在使用委托的时候,你可以像对待一个类一样对待它。即先声明,再实例化。只是有点不同,类在实例化之后叫对象或实例,但委托在实例化后仍叫委托。
声明,如:
1
namespace Vczx.ProCSharp.Exc
2 {
3 delegate
double MathsOp( double x );
4 //class defination here
5 }
这就声明了一个委托,意义:任何一个返回值为double,且只有一个形参为double的函数,都可以用这个委托来调用。
其实,委托的声明也可以在类的里面,甚至是任何一个可以声明类的地方。
实例化:
首先我们要先有一个满足委托声明的方法,假设一个返回一个数的2倍的方法:
1class MathsOperations
2{
3 public
static
double MultiplyBy2( double value )
4 {
5 return value *
2;
6 }
7}
有了这样一个方法,我们就可以实例化一个委托了:
MathsOp operation = new MathsOp( MathsOperations.MultiplyBy2 );
在实例化一个委托时,要给它一个参数,这个参数就是委托执行的方法,它可以是静态方法,也可以是实例方法(这一点有别于函数指针,函数指针只能调用静态方法),如:
MathsOp operation = new MathsOp( new Class1().Method1 );
在实例化完一个委托之后,就可以用这个委托来调用方法了:
double result = operation( 1.23 );
作者:
刘俊红
时间:
2012-10-13 17:44
本帖最后由 刘俊红 于 2012-10-13 17:46 编辑
之所以很多人拎不清委托,其中的一个原因就是混淆了以下两个东西。【他俩被统称委托后引起了相当多的麻烦】
1)委托类型。 delegate double MathsOp( double x ); 这句话定义了一个委托类型 MathsOp
2)委托实例。MathsOp operation = new MathsOp( new Class1().Method1 ); 这条语句后半截用new声明了一个委托实例,再赋值给了委托变量 operation。
委托类型作为C#中的一等公民,和类类型一样,也是引用类型。
在想委托的特殊之前,我们可以想想委托作为一个普通引用类型应该具有的东西!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2