在理解委托的时候感觉有点别扭,查考了一些书籍和自己编写的代码后,谈谈自己对委托的理解。
委托是一种特殊的.Net数据类型,它是事件处理机制的核心。正如int变量存储数字,对
象存储类实例,委托存储对方法的引用。委托将方法作为参数传递。当一个类必须调用另一个
类的方法时,但在编译的时候不知道该方法,就要用到委托。委托引用一个特定的方法,它可
以作为参数传递给另一个方法,将委托作为参数的方法可以用它调用委托所引用的初始方法。
尽管委托引用方法,其行为象方法,但从技术上讲它们是一种类--所有的委托派生
System.Delegate类。还有另一种委托叫作多播委托,它派生System.MulticastDelegate。而后
者又派生于System.Delegate。多播委托是一种特殊的委托,可以保存对多个方法的引用。
委托可以引用与任何与委托定义有着相同签名的方法。
如我们可以这样声明和调用委托:
namespace name //命名空间名
{
// 声明一个委托
public delegate void ChangeHandler();
public class A //定义一个类
{
private void Method();
B b=new B();
b.Change += new ChangeHandler(Method); //委托实例化
}
public class B //定义另一个类
{
// 声明一个委托事件,在下面调用其Change方法
public event ChangeHandler Change;
public void Method2(type para)
{
Change(); //可以这样调用签名方法
}
}
}
上面示例中,类B要调用类A的方法Method,但是不知道调用那个方法.因此在B中声明一个委托Change,,类A中 b.Change += new ChangeHandler(Method)实例化委托,类B中引用Change()就可以调用Method方法。
特别注意:方法Method定义与委托定义要相同。委托实例就可以引用任何与委托定义相同签名的方法。
浙公网安备 33010602011771号