c#基础知识3:事件
2012-08-22 16:31
344 查看
今天在想unity的start upate等等这种是怎么实现的时候,发现了unity的sendmessage机制,然后sendmessage机制,又有人说有性能问题,有人在网上用c#自带的event机制重写了这个message机制,类似于flash的event机制。于是去搜索c#自带的event机制,自己写了个小demo来实现eventDispather。
c#的event定义,
首先需要一个delegate,相当于事件的响应,c#自带了一个EventHandler,接受sender这个object,以及事件参数EventArgs(c#自带的事件参数类型)。
你也可以自己写delegate,传自己想传的参数,无需用c#自带的EventHandler和EventArgs。如
其次需要定义一个event,并将事件与你定义的delegate绑定。如
然后就需要加一个触发器,触发这个event。如
这样一个事件就定义完整了。调用的时候只用这样,用+ -来添加、删除事件响应。
参考:
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
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
相关文章推荐
- C# 基础知识系列]专题七:事件和消息的机制理解
- [C# 基础知识系列]专题四:事件揭秘
- 【转】[C# 基础知识系列]专题四:事件揭秘
- [C# 基础知识系列]专题四:事件揭秘
- [C# 基础知识梳理系列]专题四:事件揭秘
- C#基础知识回顾--委托事件
- [C# 基础知识系列]专题四:事件揭秘
- C#事件和委托的基础知识模型收藏
- C#基础知识梳理系列五:委托与事件(上)
- [C# 基础知识系列]专题四:事件揭秘
- [C# 基础知识系列]专题四:事件揭秘
- C#基础知识梳理系列五:委托与事件(上)
- C#基础知识梳理系列五:委托与事件(下)
- C#事件和委托的基础知识模型
- C#事件和委托的基础知识模型
- C#事件和委托的基础知识模型
- [C#基础知识]之.netframerwork中的事件
- [C# 基础知识系列]专题四:事件揭秘
- C# 基础知识系列]专题六:.net WinForm 控件的事件委托剖析
- C#基础知识梳理系列五:委托与事件