c# 委托与事件

//delegate 类似于js/as中的回调函数
//关键字delegate 没有方法体 返回类型和参数需要与委托的函数一致
//定义位置随意
pubic delegate void IDelegateHandler(Object sender,customEventArgs e); 


eg:
///非必须的 只是习惯上继承EventArgs ,此类已序列化
public class CustomEventArgs:EventArgs
{
   public CustomEventArgs(string name,int age)
   {
    ...
   }
   ...
}


public function employee
{
   private string _name;
   private int _age;
   
   public sting Name
   {
     get{ return _name;}
     set{_name = value;}
   }


   public int Age
   {
      get{return _age; }
      set{_age = value;}
   }


///定义事件关键字event,事件的委托类型为IDelegateHandler, playGame‘事件名称’
   public event IDelegateHandler playGame;


   public void Games()
   {
      //判断事件目标委托函数是否存在,防止NollReferenceException...
      if(playGame != null)
      {
          //触发事件委托方法
          playGame(Name,Age);
      }
   }
}




public class Manager
{
   public void notify(Object sender,customEventArgs e)
   {
     print(sender.toString() + "_" + e.Name)
   }
}




public static void Main()
{
	Manager m = new Manager();
	Boss b = new Boss();
	Employee e = new Employee('张三',23);


    ///注册监听
	e.playGame +=  new IDelegateHandler(m.notify);
	e.playGame +=  new IDelegateHandler(b.notify);


    //移除一个监听对象
	//e.playGame -=  new IDelegateHandler(b.notify);


	//do it.
	e.Games();
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值