事件和委托和有多相似的地方,都可以理解为函数的指针,但是最大的区别是:委托可以在定义的类外部调用,但是事件只能在定义的类的内部调用。所以委托其实有一种危险性,即:如果定义的方法是private,但是定义的委托是public,这个委托指向的这个方法依然能在类的外部调用,这样就打破了类的封装性,而事件正是避免了这种状况的发生,只能在类的外部给这个事件赋值,但是不能在类的外部调用这个事件。
例子:
例子:
using System;
class A
{
public delegate void wt(); //定义委托
public event wt t; //定义事件
public A()
{
t += showA; //添加方法
}
private void showA()
{
Console.WriteLine("showa");
}
public void show()
{
t(); //调用事件
}
}
class B
{
public void showB()
{
Console.WriteLine("showb");
}
}
class Test
{
public static void Main()
{
A a = new A();
a.show();
B b = new B();
}
}