.Net_委托和事件
委托是一种数据类型,也可把方法作为参数进行传递。像类也是一种数据类型。(可以声明委托类型变量)
//定义一个保存方法的类型 //定义一个无参数,无返回值存放方法的类型。 public delegate void showFundelegate(); class c { //把Fun方法放到Funing 变量中。 public showFundelegate Funing = Fun; //多播委托 Funing+=方法2; Funing+=方法3 public void Fun() { Console.WriteLine(DateTime.Now.ToString()); } static void Main(string[] args) { //调用方法 Funing(); } }
在写自定义控件的时候使用委托的弊端:
1.可以冒充事件。因为:事件只能在类的内部触发的(调用),而委托可以在任何地方访问。
2.事件不能通过=赋值,即:不可以将前面已经注册的方法覆盖掉。
事件的本质:
private myDelegate d;
public void Add(myDelegate md)
{
d+=md;
}
public void Remove(myDelegate md)
{
d-=md;
}
d();