一个事件委托的问题
我在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(); //这才是调用