作为一个学习java的人,很少遇到event这样的机制,遇到什么就直接调用不就好了? 为什么要费尽心机的去注册事件呢?希望大神能解答一下,这里仅对C#的event的写法进行记录
第一步:声明eventHandler和event
class myTestEvent
{
private int value;
//声明了一个名为“myFirstEventHandler”的eventHandler
public delegate void myFirstEventHandler();
//然后再用此hander去声明event
public event myFirstEventHandler myFirstEvent;
}
第二步,在上面的类中,写event触发的条件
public void onChangedNum()
{
//只有当事件存在的时候,才执行事件
if (myFirstEvent != null)
{
myFirstEvent();/*事件触发*/
}
else
{
Console.WriteLine("event not fire");
Console.ReadKey();//回车继续
}
}
第三步,新建立一个类,写要被注册到事件的函数,也就是执行event时所执行的函数
class subscribe
{
public void prinf()
{
Console.WriteLine("event fire");
Console.ReadKey();
}
}
第四步,测试
static void Main(string[] args)
{
myTestEvent mte = new myTestEvent();
subscribe sb = new subscribe();
mte.onChangedNum();
//这里看清楚,是new了一个eventHandler,并且把函数注册了进去
//然后加到了事件的后面
mte.myFirstEvent += new myTestEvent.myFirstEventHandler(sb.prinf);
mte.onChangedNum();
mte.onChangedNum();
}
结果如下