C# 中的委托和事件

欢迎浏览本文的后续文章: C#中的委托和事件(续)
PDF 浏览:http://www.tracefact.net/Document/Delegates-and-Events-in-CSharp.pdf
文中代码在VS2005下通过,由于VS2003(.Net Framework 1.1)不支持隐式的委托变量,所以如果在一个接受委托类型的位置直接赋予方法名,在VS2003下会报错,解决办法是显式的创建一个委托类型的实例(委托变量)。例如:委托类型 委托实例 = new 委托类型(方法名);

posted @ 2007-09-23 17:49 Jimmy Zhang 阅读(52411) 评论(413)  编辑 收藏 网摘 所属分类: 2. C# 编程

评论共5页: 上一页 1 2 3 4 5 
  回复  引用  查看    
#401楼[楼主]2009-01-07 09:02 | Jimmy Zhang      
@凯锐
你说得很对,这里我只是在说明 (object sender, EventArgs e) 这个签名的用法,如果你全包装到EventArgs中了,那么sender就不好说明了。

  回复  引用    
#402楼2009-01-07 16:41 | luyang[未注册用户]
@Jimmy Zhang
今天用了一天的时间理解你的这篇文章,获益匪浅啊!我很幸运能够看到这篇文章,让我很快的理解了委托和事件,希望您能够多向我们传授经验,十分感谢。

  回复  引用    
#403楼2009-01-20 17:14 | Snlo[未注册用户]
最近在学C#与.NET3.0高级程序设计,由于是译文版,很多概念很生硬,看了你的文章真是茅塞顿开!非常感谢!
  回复  引用    
#404楼2009-01-20 21:42 | xie-dongxue[未注册用户]
LZ写的很详细,深入浅出,清晰的讲解了委托和事件的关系,本人初学C#,同样受益匪浅。

不过感觉还是AS3的事件机制更生动明朗,直接接收器addEventListener,然后发生器dispatchEvent就搞定了。

  回复  引用    
#405楼2009-01-21 16:21 | 苏栋[未注册用户]
太牛了 !!!!

  回复  引用  查看    
#406楼2009-01-22 13:11 | 极品菜鸟      
张达达。。。。。
很受教。。。

  回复  引用  查看    
#407楼2009-01-22 17:16 | 极品菜鸟      
热水器烧水,真是太经典了。。。
  回复  引用    
#408楼2009-01-27 03:08 | ienown[未注册用户]
好文!!!谢谢!!!
  回复  引用  查看    
#409楼2009-02-02 16:53 | 砖头      
太感谢了!很是激动看到如此通俗的文章,尽管我还没看完,但无论如何我先回复一下,回复完继续看完,收益多多,谢谢楼主!!
  回复  引用    
#410楼2009-02-03 16:51 | adore[未注册用户]
很不错的文章,楼主辛苦了!我们就是缺乏把一项技术研究透的精神,与外国同行相比,国人太浮躁了!再次感谢楼主!
  回复  引用  查看    
#411楼2009-02-03 21:51 | 影乌      
--引用--------------------------------------------------
张子阳.: <font color="#000000">@yellowyu</font>
<p><font style="color: #808000" color="#000000">真的适合新手吗?<br />
</font><font color="#000000">我不会去在乎有多少人看,适合新手看还是适合老手看,也不会去关心反响如何,评价好还是评价差,我只尽力去做事,仅此而已。</font></p>
<p><font color="#000000"><span style="color: #808000"><font color="#000000"><span style="color: #808000"><font color="#000000"><font style="color: #808000" color="#000000">补充下,好像这篇是译过来呀!楼主真辛苦了</font></font></span><br />
</font></span>我不知道你何出此言,我翻译的文章都会在标题注明[译],正文顶部也会给出原文链接。<br />
<br />
<span style="color: #808000">声明为private有用的,就是自已也是客户端的时候,在做WINFROM有个异步调用的问题,那时的委托是可以为PRIVATE</span><br />
很抱歉,我做WebForm远多于WinForm,见解狭隘了。但我不认为有哪个人可以面面俱到,写出一篇适合新手、中级水平、高手阅读的文章或者书籍。如果你见到有人这样说,那么他一定是为某本新书做宣传,在我看来,那是扯淡。<br />
</font></p>
--------------------------------------------------------
--引用--------------------------------------------------
张子阳.: <font color="#000000">@yellowyu</font>
<p><font style="color: #808000" color="#000000">真的适合新手吗?<br />
</font><font color="#000000">我不会去在乎有多少人看,适合新手看还是适合老手看,也不会去关心反响如何,评价好还是评价差,我只尽力去做事,仅此而已。</font></p>
<p><font color="#000000"><span style="color: #808000"><font color="#000000"><span style="color: #808000"><font color="#000000"><font style="color: #808000" color="#000000">补充下,好像这篇是译过来呀!楼主真辛苦了</font></font></span><br />
</font></span>我不知道你何出此言,我翻译的文章都会在标题注明[译],正文顶部也会给出原文链接。<br />
<br />
<span style="color: #808000">声明为private有用的,就是自已也是客户端的时候,在做WINFROM有个异步调用的问题,那时的委托是可以为PRIVATE</span><br />
很抱歉,我做WebForm远多于WinForm,见解狭隘了。但我不认为有哪个人可以面面俱到,写出一篇适合新手、中级水平、高手阅读的文章或者书籍。如果你见到有人这样说,那么他一定是为某本新书做宣传,在我看来,那是扯淡。<br />
</font></p>
--------------------------------------------------------
其实适合不适合新手,这个问题有我这类新人来回答是最合适的,其实坦白讲对别人我不知道,但是对于我来说确实是有用,就想LZ说的,没人能面面俱到,我认为只要有值得我们去学习的就是应该被支持的。学习触发事件等内容我找了将近2天的时间,这篇文章是我所能找到的最最浅显易懂的也让我真正理解了从委托(代理)到事件的含义和做法。其实我不理解yellowyu 何出:理解成一个发消息一个收消息会比较适合新手之类的言语。我倒是会这样理解的人是以为其本身少了抽象的感念。。。
再次感谢楼主文章。。。由于在学习remoting 服务器端获取客户端事件的时候需要对这方面进行深入的学习,故而来踩。

  回复  引用  查看    
#412楼2009-02-05 10:26 | 极品菜鸟      
来看了好几次,慢慢的还是看懂了,有一个问题想问楼主:
public delegate void BoiledEventHandler(Object sender, BoiledEventArgs e);
这个方法中sender对象就是监视对象Heater了吧,既然这样,还要BoiledEventArgs 干什么呢?因为Heater已经包含了所有感兴趣的信息了,再加一个BoiledEventArgs ,觉得好像没有什么必要。。。这么想对不对呢?

  回复  引用  查看    
#413楼2009-02-05 16:16 | 小手冰冰凉      
初学者是多委托和时间不能太理解。。。希望楼主多发一些关于委托和时间的用法。。在实际应用中都起到了什么作用。。最好来点典型的例子
  回复  引用    
#414楼2009-02-06 16:14 | lihui[未注册用户]
@匿名
不错,使我明白了不少

  回复  引用  查看    
#415楼2009-02-08 19:19 | 悟〈--觉      
受益匪浅
  回复  引用    
#416楼2009-02-11 11:25 | CuiKai[未注册用户]
我是职业看贴不回的,都忍不住要称赞一下了!
说实话,委托这个麻烦玩艺困扰我好久了。
照猫画虎的也用过,但其实并不太清楚为什么这么用!
今天总算守得云开见日明了!
非常感谢。。。

  回复  引用    
#417楼2009-02-16 16:07 | haoxp[未注册用户]
太好了,连我都能看懂些东西,谢谢
  回复  引用    
#418楼2009-02-17 15:37 | NightCat[未注册用户]
非常感谢!楼主辛苦了!
对我非常有帮助,再次感谢!!!

  回复  引用    
#419楼2009-02-19 10:49 | yiyisawa.liu[未注册用户]
学习了这篇文章。觉得知道了两个重点:委托:将方法当作另一方法的参数传递;
事件:类似于声明一个进行封装的委托类型的变量。

  回复  引用  查看    
#420楼2009-02-23 17:36 | evergreen      
真的受益匪浅
  回复  引用    
#421楼2009-02-25 14:52 | zgk[未注册用户]
受教了
..顶
  回复  引用    
#423楼2009-02-27 16:40 | 雪界冰河
通俗易懂,尤其是讲委托那部分,受教了,非常感谢
  回复  引用    
#424楼2009-02-28 11:04 | wanderer[未注册用户]
C#学到委托就卡住了,找了几本书看都还是不得门入,直到在天极看到这篇文章,比那些书写得都更明白,特地找到原版地,在此感谢
  回复  引用  查看    
#425楼2009-02-28 23:28 | funny zak      
完全懂了,真心的说声谢谢,希望能看到你更好的文章
  回复  引用  查看    
#426楼2009-03-01 22:08 | xq.cheng      
看完了,mark,总有你这么一种人,让人受益匪浅!
非常感谢!

  回复  引用    
#427楼2009-03-03 10:54 | zxz414644665[未注册用户]
08一直延续到09还有这么多人看帖跟帖,说明此问实在写的好,我是c#初学者,好多东西不懂,确实我认为此文写的非常好,很适合像我这样的初学者,希望LZ能多发一些像这样的文章,希望LZ能加我的QQ,我有好多问题正需要像LZ这样的高手帮助我解决,谢谢!
QQ:414644665

  回复  引用    
#428楼2009-03-04 11:20 | huntervip2008[未注册用户]
写的怎不错,感谢楼主的分享
看这片文章让我豁然开朗
谢谢啊!!!
我要收藏你的文章,呵呵

  回复  引用    
#429楼2009-03-05 13:16 | milozhao[未注册用户]
说实话,这是我看到的分析 事件 与 委托 最透彻的文章了,LZ把目前.NET 惯用的 事件和委托的使用方式还原到最初形态,让我们知道它是从何而来,而且,由浅入深的分析了 观察者模式 ,这样的好文章不得不顶!
  回复  引用    
#430楼2009-03-08 01:05 | 铳^_^[未注册用户]
非常感谢,,,这文章很细心地看完了,,,对委托和事件了解和清楚很多
  回复  引用    
#431楼2009-03-09 12:49 | 神探飞猪头
感谢楼主,特此申请帐号感谢
  回复  引用  查看    
#432楼2009-03-10 00:17 | 小李程式?      
太感谢了
对于.net 我虽说不是新手 04年以来一直用
但惭愧的是我一直没有真正理解委托,今天拜读大作,真是茅塞顿开啊!爽!

  回复  引用    
#433楼2009-03-10 11:12 | 星之说在[未注册用户]
我看了这篇文章后,对委托跟事件明白了大半,我之想说一句,非常感谢你,谢谢。
  回复  引用    
#434楼2009-03-12 17:34 | 奇米奇[未注册用户]
楼主写的很精彩~!!!
受益匪浅~!!!
喜欢这种由浅入深的方法~!!!
请教个问题:
我以前学过vb,现在在学c#,发现两者思考问题的角度不一样,不过我现在感觉自己还是老用vb的方式去思考程序,楼主能不能阐述一下c#的思考方式,让我们这些初学者可以尽快的用C#的方式来思考问题~!!!

  回复  引用  查看    
#435楼2009-03-13 22:37 | tssing      
太长了,
非常支持楼主的整理。
我只读了前一行就没读了。

通啦,通啦,终于通了,
像《疯狂的石头》结局一样,看了后让人特别舒服!

  回复  引用    
#437楼2009-03-16 16:46 | 大约还在冬季



请问有没有关于企业库讲解的文章和通用的方法类可以供参考一下

在网上找了好久都没找到好一点的。弄了半天也弄不好


  回复  引用  查看    
#438楼2009-03-16 17:18 | tssing      
@大约还在冬季
我也在找

  回复  引用    
#439楼2009-03-16 17:38 | MK[未注册用户]
好贴
  回复  引用  查看    
#440楼2009-03-17 17:05 | JothanWang      
关于委托,我是看了很多文章,这次看完,终于豁然开朗,有一种拔开云雾见青天的快感,谢谢你的由浅入深的讲解.
  回复  引用    
#441楼2009-03-17 22:35 | 米老鼠
打印出来了 好帖
  回复  引用    
#442楼2009-03-23 00:50 | 553649769[未注册用户]
我前天开始学c# 当学到委托时 在图书馆里找聊很多书 但总感觉模模糊糊 没弄懂 在网上搜到了这篇文章后 我杂杂实实的看了 觉得真的理解了 觉得写得太好了 这是我第一次来这里 也是我第一次觉得看到了又好文章的地方 以后肯定常来 表示深深的感谢 虽然你可能很忙 不一定就看到我的留言 但我得 再次表示感谢
  回复  引用    
#443楼2009-03-25 17:06 | 志[未注册用户]
哎。。。。。
处女帖给你了。
收益非浅!

  回复  引用    
#444楼2009-03-29 19:03 | TP.Inso[未注册用户]
写的不错,我看明白了。

有评论说这文的,我想说如果您觉得这文说得不好的请您也写一篇发地址让我看。我觉得这文写的很通俗,支持作者了,毕竟写个文不容易。作为搞软件的真的难得抽出空闲的时间来教我们这些初学者。

我也希望作者能多出些这样的,对我这样的初学者帮助真的很大。

  回复  引用    
#445楼2009-03-30 15:49 | Lancecyt[未注册用户]
很好,前些天查了下msdn,关于事件的那部分确实写的不是很清楚,楼主的文章确实相当赞,顶一个~~~
  回复  引用    
#446楼2009-03-31 13:49 | qingye[未注册用户]
非常感谢老鸟对菜鸟的关照..

一句话:很好很强大.............谢谢.....

让新手一下子从绕口令中解脱了...每次看书,什么什么的口令似的...

  回复  引用    
#447楼2009-03-31 15:18 | dmho[未注册用户]
寫得不錯,初學的一看就通了好多。
謝謝博主,支持博主多寫文章。

  回复  引用    
#448楼2009-03-31 21:23 | zwb1101[未注册用户]
好文章…… 起码让我更知道了委托和事件……
  回复  引用    
#449楼2009-04-01 10:32 | Rico Wang[未注册用户]
我会多读几遍,确实不错!
  回复  引用  查看    
#450楼2009-04-04 03:05 | 技术拓荒者      
mark
现在三点了,明天看了

  回复  引用  查看    
#451楼2009-04-08 13:14 | Kai.Ma      
这篇关于委托和事件的文章写得非常好,由浅入深,分析透彻,循循善诱!

期待你的新书面市.

  回复  引用    
#452楼2009-04-09 18:41 | 偷学技术的人[未注册用户]
牛人才能写出牛文章来,学了很多东西,谢谢
  回复  引用  查看    
#453楼2009-04-10 16:05 | 林松斌      
从头到尾做了一遍练习, 谢谢楼主
  回复  引用    
#454楼2009-04-10 16:09 | guowen[未注册用户]
真的是受受益匪浅,很好!
  回复  引用    
#455楼2009-04-10 17:50 | HO~HO~HO~HO~[未注册用户]
非常好的文章,我看书看了两遍也没看明白,看这个搞明白了。非常感谢楼主。
这种文章要多出点儿啊

  回复  引用    
#456楼2009-04-15 11:12 | 支持LZ[未注册用户]
看明白了一些 细细品味!!
  回复  引用    
#457楼2009-04-16 11:55 | Jimmy Mi[未注册用户]
能教人知识的文章就是好文章!顶。。。本人正处于菜鸟进化阶段,如果看得起请加我QQ237373429
  回复  引用    
#458楼2009-04-17 10:56 | gb[未注册用户]
说的非常的明白
思路很清楚
颇有所得
感谢感谢

  回复  引用    
#459楼2009-04-20 22:31 | 爬爬虫[未注册用户]
好东西总能吸引人
  回复  引用    
#460楼2009-04-26 23:30 | duanhaowen[未注册用户]
看了您的文章,我对委托和事件又有了一定的了解,(还要慢慢琢磨)

不过还有一些问题想请教.
在作Windwos Form 程序开发时,像一些控件的单击事件,鼠标移动事件又是怎样实现的呢,与您文中所提到的事件有什么不同吗.
还有,就你这个"热水器"这个例子"用"异步委托"如何实现呢.希望能读到你有关异步程序开发的文章.

谢谢!!

  回复  引用    
#461楼2009-04-26 23:31 | duanhaowen[未注册用户]
看了您的文章,我对委托和事件又有了一定的了解,(还要慢慢琢磨)

不过还有一些问题想请教.
在作Windwos Form 程序开发时,像一些控件的单击事件,鼠标移动事件又是怎样实现的呢,与您文中所提到的事件有什么不同吗.
还有,就你这个"热水器"这个例子"用"异步委托"如何实现呢.希望能读到你有关异步程序开发的文章.

谢谢!!

  回复  引用    
#462楼2009-04-30 14:23 | 王一一[未注册用户]
@duanhaowen
都是一样的。只不过鼠标移动哪些事件是ms做好的。你直接用就可以了,不能满足要求的就自己写。看看张的第二篇文章就知道什么是异步委托了。

  回复  引用    
#463楼2009-05-01 17:50 | sajiao
以前不懂,看了明白了很多哈 谢谢
  回复  引用  查看    
#464楼2009-05-03 09:30 | 精灵网络      
正在学习中,哈哈
  回复  引用    
#465楼2009-05-06 09:17 | aaabbb[未注册用户]
从头到尾仔仔细细的看了一遍,实在是太好了。谢谢楼主!
  回复  引用  查看    
#466楼2009-05-06 18:12 | SmartFramework@live.jp      
收获中。。。。。
  回复  引用    
#467楼2009-05-07 16:32 | 一男[未注册用户]
看了两遍,很有收获,多谢楼主慷慨分享。
  回复  引用    
#468楼2009-05-10 19:17 | netlyf[未注册用户]
顶了,谢谢楼主的劳动。
  回复  引用  查看    
#469楼2009-05-11 17:00 | ajiecs      
很好,终于明白了,谢谢楼主

  回复  引用    
#470楼2009-05-11 22:05 | bobo82529[未注册用户]
楼主非寻常人啊,太厉害了,思维缜密,同时又善于表达。天才!!!
  回复  引用  查看    
#471楼2009-05-13 13:30 | -brian-      
在看一遍
  回复  引用  查看    
#472楼2009-05-15 11:11 | 段启锋      
以前看过一次没有看懂. 今天又看终于看懂了 将的非常好 很多好书讲的也没有这个仔细.感谢楼主了
  回复  引用    
#473楼2009-05-16 16:47 | haifeng_4216[未注册用户]
这是我看过的最是我领悟的一篇事件委托方面的文章。谢谢楼主!
  回复  引用  查看    
#474楼2009-05-18 16:25 | 瓜头&&朱头      
太经典了。我终于找到方法了。
  回复  引用    
#475楼2009-05-19 13:59 | 王者归来![未注册用户]
牛B!
讲的非常清晰,说出来原理性的东西,这是我看到过的最经典的!!!
太感谢楼主

  回复  引用  查看    
#476楼2009-05-21 11:58 | 阳光下的柚子      
很贴切,没搞明白的时候,每次用到这一块就和博主说的一样,感觉很别~过了这个槛就轻松多了,谢谢博主的好文
  回复  引用    
#477楼2009-05-29 09:57 | 小莱[未注册用户]
才看了一半,感觉如梦初醒,谢谢楼主无私奉献!
  回复  引用  查看    
#478楼2009-05-29 22:39 | xland      
首先:此文给了我不小的帮助
另:
文中提到
“使用委托可以将多个方法绑定到同一个委托变量,当调用此变量时(这里用“调用”这个词,是因为此变量代表一个方法),可以依次调用所有绑定的方法。”



这里说的不好,应该避免使用多播委托的顺序,你确定他是按顺序来的吗?
在观察者模式中不强调这些顺序,如果顺序真的存在不利于观察者模式的解耦

  回复  引用    
#479楼2009-06-04 12:07 | 蓝天402[未注册用户]
很好的,总算明白了
  回复  引用    
#480楼2009-06-04 23:59 | 黄菜鸟[未注册用户]
学习,受益良多,非常感谢
  回复  引用  查看    
#481楼2009-06-05 08:46 | 温景良(Jason)      
写得很好
  回复  引用    
#482楼2009-06-05 10:46 | zyw358486[未注册用户]
谢谢,写的真好!
  回复  引用    
#483楼2009-06-05 11:26 | Ypeigen[未注册用户]
受益匪浅,顶一个
  回复  引用    
#484楼2009-06-17 17:37 | 哈哈哈哈[未注册用户]
例子举的不好。代码段有点零散,文章太长。
  回复  引用    
#485楼2009-06-20 10:12 | 陈敏永[未注册用户]
谢谢分享,收获很大。。
  回复  引用  查看    
#486楼2009-06-22 00:10 | 水边城      
非常明白,写得很好
  回复  引用    
#487楼2009-06-22 10:33 | Rivan[未注册用户]
this article do help me,thank u!
  回复  引用  查看    
#488楼2009-06-26 16:55 | *NO.1*      
张老师,我改写了这个热水器的例子,把事件的注册封装进了Heat类里面,这样直接调用BoilWater()方法就可以自动注册事件,这样做可以吗?
  回复  引用    
#489楼2009-06-28 22:17 | gavinteng8002[未注册用户]
谢谢,辛苦了
  回复  引用    
#490楼2009-06-30 19:51 | xiaoton[未注册用户]
写得太好了,谢谢!
评论共5页: 上一页 1 2 3 4 5 



发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 903360




相关文章:

相关链接: