日期:2014-05-19  浏览次数:20801 次

c# event和delegate的应用?
研究了好久,没弄明白呀~

--------------------------------------------------

我试着仿照写了一些例子,但是还是没弄明白事件的作用

        public   delegate   void   dgEventHandler(object   sender,EventArgs   e);
        class   Class2
        {
                static   public   event   dgEventHandler   Et;
                static   public   void   OnEt(object   sender,   EventArgs   e)
                {
                        Console.WriteLine( "OnEvent ");
                }
                static   void   M(object   sender,EventArgs   e)
                {
                        Console.WriteLine( "Method ");  
                }

                static   void   Main()
                {                      
                        dgEventHandler   dg   =   new   dgEventHandler(M);
                        Et   +=   dg;
                        Et(null,null);
                }

        }

---------------------

各位能不能具了简单的例子,说明事件的应用?
有什么事情是事件能做到而调用方法做不到的呢?

------解决方案--------------------
可以这么理解

但是发事件的地方可以不用知道是谁在接收
也就是说他发了事件就什么都不管了
------解决方案--------------------
如果你要在一个对象中调用另外一个对象中的公有函数怎么调用?

最直接的办法就是把对象2镶嵌到对象1中(或者在对象1的某个函数体中定义一个对象2的实例)成为一成员然后调用,这样的坏处就是对象1依赖对象2存在.增加了藕合.

另外一个办法就是在对象2中定义一个同样结构的委托,然后把委托指向对象2的公有函数,然后在对象一的函数中调用委托就是了.

___________________________________

多用来在两个模块之间通讯的一种手段,一种低偶合的手段.
------解决方案--------------------
如果要传递方法,就必须把方法的细节包装在一个新类型的对象中,这就是委托.
事件只是委托的一种特殊形式.]

教科书上标准的定义,不知道对大家有帮助否.....
------解决方案--------------------
有什么事情是事件能做到而调用方法做不到的呢?
--------------------

事件源是主动的,有事发生就广播消息,你可以订阅也可以不订阅,就好像电视台每天都有节目在播,你收就能看,不想看就不用收...
方法则是被动的,只能等待你来调用,你不调用它就不会执行,就好像我们某些衙门,你去催才有人管,不催别指望它主动给你做...
------解决方案--------------------
http://intersense.spaces.live.com/?_c11_BlogPart_BlogPart=blogview&_c=BlogPart&partqs=cat%3ddotNET
刚好最近就在研究事件和代理,稍微总结了一下。
希望对你有帮助。