主要區別:1.事件在類外綁定事件只能用“+=”(“-=”解綁),不能使用‘=’綁定;如果在類內部綁定事件可以用‘=’;
2.委托在類內類外都可以用"+="、"-="、"=";
3.事件的調用(執行)只能在類內調用;委托(公有)在類內類外都可以調用
例子:
class A
{
public delegate void FunHandleEvent();
public FunHandleEvent funHandleEvent;
public event FunHandleEvent FunEvent;
public A() {
//通過事件綁定方法
FunEvent = FunA;
}
//調用事件
public void Fun()
{
if (FunEvent != null)
{
FunEvent();
}
}
private void FunA()
{
Console.WriteLine("FUNA");
}
}
class B
{
public B() { }
public B(A a)
{
//A類外綁定方法
a.FunEvent += FunB;
}
private void FunB()
{
Console.WriteLine("FUNB");
}
public void FunC()
{
Console.WriteLine("FUNC");
}
}
main:
static void Main(string[] args)
{
A a = new A();
B b = new B(a);
//事件只能在類內部調用,而委托可以在類外調用
//事件在類外部綁用+= -=,不能用=,在內部可以用=;
a.FunEvent += b.FunC;
a.Fun();//通過方法間接調用事件
a.funHandleEvent = b.FunC;//通過委托綁定方法
a.funHandleEvent();//直接調用委托
Console.ReadKey();
}