日期:2014-05-17  浏览次数:20770 次

一个事件委托的问题
我在Form1里面声明了一个委托
public delegate void EventHandler2(object sender, EventArgs e);

为什么在类外只能通过类名调用
 Form1.EventHandler2 messarr = new Form1.EventHandler2(frm_Click);

而不能通过对象来调用?

------解决方案--------------------
委托相当于一个类(编译器玩了魔术),所以在类中定义委托,就相当于内嵌类一样。

Form1.EventHandler2 这个和调用没有关系,只是说明了这么一个类型。

好比
class A
{
public class B { public void foo() { ... } }
}
那么你要调用B的foo方法,你得这么写:
A.B b = new A.B(); //A.B这里不是调用,只是说明有这么个类型。
b.foo(); //这才是调用