什么是委托呢?
委托是一种引用类型。用来封装带有特定签名和返回类型的方法。其定义规则如下:
访问修饰符 delegate 返回类型 委托名(参数列表);

委托怎么使用呢?
定义委托之后,可以通过实例化委托,传入返回类型和签名都匹配的方法,用这个委托来封装成员方法。此外,还可以使用匿名方法。委托既可以封装实例方法,也可以封装静态方法。

静态委托是怎么回事?
所谓的静态委托,也就是把一个委托变量声明为静态的,用它指向一个实例化后的委托,例如:
public static 委托类型 变量 = new 委托类型(方法名);

如何用属性封装静态委托呢?
public static 委托类型 属性名
{
      get
           {
                return new 委托类型(方法名);
           }
}
这样做的好处是只有在访问属性时才实例化委托,而不必在实例化类时就实例化委托。

多播委托是怎么回事?
所谓的多播委托就是通过一个委托调用两个或多个方法。使用方法如下:
使用+=操作符增加委托实例,使用-=操作符删除一个委托实例。
public delegate void myDelegate(int i,int j);
myDelegate delegate1,delegate2,delegate3;
delegate1 = new myDelegate(method1);
delegate2 = new myDelegate(method2);
delegate3 += delegate1;
delegate3 += delegate2;
(delegate3 = delegate1 + delegate2;)
delegate3 -= delegate2;

什么是事件呢?
所谓的事件就是说,发生了一件事情,比如按钮被按下,窗口被关闭等等。

什么是发布和订阅呢?
在C#中,任何对象都可以发布一组事件供其他类订阅。当发布事件的类产生一个事件时,所有订阅类都会得到通知。发布者和订阅者通过委托实现了解耦,也就是说发布类的修改不会影响到订阅类,反之亦然。

事件和委托是什么关系呢?
C#中事件是通过委托实现的。发布类定义了订阅类必须实现的委托。订阅类需要做两件事情:首先它创建一个匹配委托签名的方法,然后创建封装了该方法的该委托类型的实例。当事件发生时,订阅类的方法将通过委托来调用。处理事件的方法我们称为事件处理方法(event handler)。按照约定,.NET框架中的事件处理方法返回void值,有两个参数,一个参数是事件的“来源”(也就是发布类)。另一个是EventArgs派生而来的对象。EventArgs是所有事件数据的基类。

什么是事件的触发呢?
所谓的事件的触发就是指调用事件,例如,假设有一个事件,名字叫OnTimeChanged,那么要触发这个事件,只需这么写就可以了:OnTimeChanged(参数列表)。如果一个事件没有订阅者,也就是说没有哪一个委托和该事件关联,那么该事件的值为NULL。

posted on 2008-09-27 09:30  〆o殺殸纨o〆  阅读(182)  评论(0编辑  收藏  举报