//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();
}