委托
文章节选自 msdn. http://www.codeproject.com/KB/cs/event_fundamentals.aspx
委托的定义和使用
委托是一种引用方法的类型。一旦为委托分配了方法,委托将与该方法具有完全相同的行为。
委托类似于 C++ 函数指针(指向函数的指针变量,该函数的入口地址就是指针所指向的地址,可通过该指针变量调用函数,主要有两个用途:调用函数和做函数的参数),但它是类型安全的。
类似对对象引用的容器,委托可被认为是引用多个方法的容器。为了使一个方法能被一个特殊的委托实例触发。该方法必须注册为委托实例。注册之后。该方法会被加入到委托的方法引用集合中,委托可以同步或者异步的调用他们的引用方法。异步调用时。方法会在一个独立的线程池执行。当该委托实例被触发时。被该委托引用的所用方法都会被执行。
委托不能包含所用方法的引用。只能引用和委托的签名(返回类型和参数组成)相同的方法,
委托定义声明。
委托声明类似方法声明。但没有方法体。上面的委托只能引用返回值为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);}
到这里。委托就可以被使用了。
由于该实例注册了两个命名方法MyMethod
和MyOtherMethod和一个匿名方法
。所以上句执行时。注册的所有方法都会被调用。
至于为什么使用委托及委托的其他知识希望高手指点!!