委托,读作wěi tuō,意思是将自己的事务嘱托他人代为处理。同时委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性。
委托_委托 -引言
委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性。
委托_委托 -词语释义
【词语】:委托
【注音】:wěi tuō
【释义】:1.将自己的事务嘱托他人代为处理。2.交结,结纳。3.犹依托,依靠。
委托_委托 -引用类型
一种引用类型,它是 C++ 函数指针的托管版本。委托可以引用实例和静态(在 Visual Basic 中为 Shared)方法,而函数指针只能引用静态(在 Visual Basic 中为 Shared)方法。
在C#中,委托是一种可以把引用存储为函数的类型。
委托
委托的声明非常类似于函数,但不带函数体,且要使用delegate关键字。
委托的声明指定了一个函数签名,其中包含一个返回类型和参数列表。
在定义了委托后,就可以声明该委托类型的变量。
接着将这个变量初始化为与该委托有相同签名的函数引用。
之后,就可以使用委托变量调用这个函数,就像 该变量是一个函数一样。
委托_委托 -委托本质
在C#中使用delegate关键字定义委托,然后使用我们熟悉的函数调用的语法来调用委托,如上述例子中的cb(“skynet”,23)。在这简单的表象背后,.NET编译器为我们做了什么呢?
可以知道定义CallBack委托时,编译器为我们做了如下工作,实际上定义任何委托编译器都会做如下工作:
声明一个类,对应上图中的.class nested public auto ansi sealed。
该类扩展自System.MulticastDelegate,对应上图中的extends [mscorlib]System.MulticastDelegate。
该类包含一个构造器,对应上图中的.ctor: void(object ,native int)。
该类包含三个方法,分别是BeginInvoke、EndInvoke、Invoke。
委托_委托 -委托类
当我们用delegate关键字声明委托时,编译器自动为我们生成类。类的名字即为委托变量名,访问类型为定义的委托访问类型。如上例中,public delegate void CallBack(string name, int number);定义的委托对应的类为CallBack,访问类型为public,该类继承自[mscorlib]System.MulticastDelegate。如果我们定义委托的访问类型为private或者protected,则对应的委托类的访问类型为private或者protected。但是任何委托都继承自[mscorlib]System.MulticastDelegate。
什么是委托
首先要知道什么是委托,用最通俗易懂的话来讲,你就可以把委托看成是用来执行方法(函数)的一个东西。
如何使用委托
在使用委托的时候,你可以像对待一个类一样对待它。即先声明,再实例化。只是有点不同,类在实例化之后叫对象或实例,但委托在实例化后仍叫委托。