委托

 文章节选自  msdn.  http://www.codeproject.com/KB/cs/event_fundamentals.aspx

 

委托的定义和使用      

     委托是一种引用方法的类型。一旦为委托分配了方法,委托将与该方法具有完全相同的行为。

     委托类似于 C++ 函数指针(指向函数的指针变量,该函数的入口地址就是指针所指向的地址,可通过该指针变量调用函数,主要有两个用途:调用函数和做函数的参数),但它是类型安全的。

     类似对对象引用的容器,委托可被认为是引用多个方法的容器。为了使一个方法能被一个特殊的委托实例触发。该方法必须注册为委托实例。注册之后。该方法会被加入到委托的方法引用集合中,委托可以同步或者异步的调用他们的引用方法。异步调用时。方法会在一个独立的线程池执行。当该委托实例被触发时。被该委托引用的所用方法都会被执行。

     委托不能包含所用方法的引用。只能引用和委托的签名(返回类型和参数组成)相同的方法,

     委托定义声明。 

public delegate void mydelegate(string myString)

委托声明类似方法声明。但没有方法体。上面的委托只能引用返回值为void,参数为string类型的方法。下列方法可被注册为mydelegate的实例。 

public static void myMethod(string someString)

{

     //to do something

}

一个新的委托声明定义后。必须创建一个委托实例。以使方法可以注册。最终被调用。委托实例如下:

 

//初始化委托实例并注册一个命名方法

mydelegate del=new mydelegate(myMethod)

委托实例化后。其他的方法也可以被注册。如:

 

del+=new mydelegate(MyOtherMethod)

//注册一个匿名方法

del+=delegate(string someString){System.Console.WriteLine(someString);}

到这里。委托就可以被使用了。

 

del("my string value");

由于该实例注册了两个命名方法MyMethodMyOtherMethod和一个匿名方法 。所以上句执行时。注册的所有方法都会被调用。

      至于为什么使用委托及委托的其他知识希望高手指点!!

posted on 2008-09-02 15:31  管理员  阅读(260)  评论(1编辑  收藏  举报

导航