c#的event定义,
首先需要一个delegate,相当于事件的响应,c#自带了一个EventHandler,接受sender这个object,以及事件参数EventArgs(c#自带的事件参数类型)。
你也可以自己写delegate,传自己想传的参数,无需用c#自带的EventHandler和EventArgs。如
public delegate void MyEventHandler(Event evt);
其次需要定义一个event,并将事件与你定义的delegate绑定。如
public event MyEventHandler evtHandlers;
然后就需要加一个触发器,触发这个event。如
public void dispatchEvent(Event evt)
{
evtHandlers(evt);
}
这样一个事件就定义完整了。调用的时候只用这样,用+ -来添加、删除事件响应。
class MainClass
{
public static void Main (string[] args)
{
Console.WriteLine ("Hello Event!");
EventDispatcher ed = new EventDispatcher();
ed.evtHandlers += new MyEventHandler(onEvt);
//
Event evt = new Event("fuckName", true, null);
ed.dispatchEvent(evt);
}
private static void onEvt(Event evt)
{
Console.WriteLine("事件名称{0}", evt.evtName);
}
}
参考:
1、http://www.everyday3d.com/blog/index.php/2010/10/04/c-events-and-unity3d/
2、http://msdn.microsoft.com/en-us/library/aa645739%28VS.71%29.aspx
3、http://forum.unity3d.com/threads/38094-Is-SendMessage-really-that-bad?p=245970#post245970