C#中的委托和事件(续)

posted @ 2008-08-22 19:39 Jimmy Zhang 阅读(7930) 评论(35)  编辑 收藏 网摘 所属分类: 2. C# 编程

  回复  引用    
#1楼2008-08-24 16:55 | 网络战士[未注册用户]

  回复  引用  查看    
#2楼2008-08-24 21:16 | 李胜攀      
赞一个
  回复  引用    
#3楼2008-08-28 10:30 | 路客[未注册用户]
精华啊,
希望楼主写一个线程的系列文章

  回复  引用  查看    
#4楼[楼主]2008-08-28 13:51 | Jimmy Zhang      
@路客

嗯,有时间会去写的,这个月看奥运了,就只写了这一篇~~

  回复  引用    
#5楼2008-08-30 11:41 | fz[未注册用户]
看了你的文章真是受益匪浅,谢谢你,在看你写的反射一系列文章中,对早绑定(Early binding),晚绑定(Late Binding)只是一笔带过,不是很清楚,能否说透点。另外期待线程的系列文章,
  回复  引用    
#6楼2008-09-09 11:48 | kikopw[未注册用户]
lz不错,当时毕业设计就用了委托,有许多还没搞懂,今天可算清楚了,xiele
  回复  引用    
#7楼2008-09-16 00:38 | css0213[未注册用户]
谢的真是非常不错,经常关注,很通俗易懂!谢谢!
  回复  引用  查看    
#8楼2008-09-23 11:20 | geniushuai      
l楼主功力深厚着呢
  回复  引用  查看    
#9楼2008-10-23 11:47 | 子逸      
收藏 了
  回复  引用    
#10楼2008-10-23 15:55 | 一个脚印[未注册用户]
脚印更深了。
  回复  引用    
#11楼2008-11-06 13:39 | kevinluo[未注册用户]
不错不错.
  回复  引用    
#12楼2008-11-17 14:56 | cqaofeng[未注册用户]
鼎,
  回复  引用    
#13楼2008-11-24 23:49 | 余丹[未注册用户]
谢谢!!
  回复  引用    
#14楼2008-11-27 20:32 | TigerKing一虎虎[未注册用户]
大 哥 讲 的 很好 我 研究 半天了 说 实 在 还 有 点 绕 但 理解 了很多 谢谢!!!!!
  回复  引用    
#15楼2008-11-28 16:39 | sumbol[未注册用户]
上一篇入门级的还行,这篇就有点吃不动了,大哥,这怎么办啊
  回复  引用  查看    
#16楼[楼主]2008-11-28 18:54 | Jimmy Zhang      
@sumbol

没有关系的,有的时候没有一定经验一些概念一时是不好理解,以后可以再回头来看。

  回复  引用    
#17楼2008-12-16 00:05 | fang_regal[未注册用户]
第一次看到讲的这么透彻的文章 强!
  回复  引用    
#18楼2008-12-18 17:40 | maqiao[未注册用户]
震撼!太强了!大哥要赶紧把这些好东东都集结成书啊,我一定要好好拜读!
  回复  引用  查看    
#19楼[楼主]2008-12-18 19:02 | Jimmy Zhang      
@maqiao
是的啊,已经集结成书了《.NET之美》,明年你联系我啊,给你优惠,呵呵~~~

  回复  引用  查看    
#20楼2008-12-20 23:35 | 紫微星      
@Jimmy Zhang
子阳兄,我也想要优惠哦,嘿嘿
你换了新博皮,现在在IE6下滚动页面会卡,呵呵

  回复  引用  查看    
#21楼2009-01-08 17:11 | 凯锐      
樓主兩篇委托和事件,這兩天陸陸續續看完了,感覺樓主是很用心很負任的去寫了,改變了我以前的一些看法。在此表示感謝!然后說說我看后的一些小小的感想吧,或者說是我的小看法吧:如有冒犯不對之處,請樓主和各位路過的兄弟姐妹包涵並指正為謝!
1、樓主在第一篇中就指明了這些演示實例在VS2005下調試通過,那麼像下面這樣的代碼:
pub.NumberChanged += new GeneralEventHandler(sub1.OnNumberChanged);
pub.NumberChanged += new GeneralEventHandler(sub2.OnNumberChanged);
pub.NumberChanged += new GeneralEventHandler(sub3.OnNumberChanged);
完全用以下這種
pub.NumberChanged += sub1.OnNumberChanged;
pub.NumberChanged += sub2.OnNumberChanged;
pub.NumberChanged += sub3.OnNumberChanged;
應該不會讓人看得一會是這樣子不支持隱式,一會兒又有隱式的感覺了。當然,這只是我個人看法,樓主大可不必計較。
2、在獲得多個返回值與異常處理這一節當中,封裝后似乎還沒有沒有封裝前來的直接來得直觀易懂,其實有些時候,似乎簡單也是蠻好的。如果封裝,個人也認為直接返回List<>也許更直接吧。例如這樣子:
        public static List<T> FireEvent<T>(Delegate del, params object[] args)
        {

            List<T> objList = new List<T>();

            if (del != null)
            {
                Delegate[] delArray = del.GetInvocationList();
                foreach (Delegate method in delArray)
                {
                    try
                    {
                        // 使用DynamicInvoke方法触发事件
                        object   obj = method.DynamicInvoke(args);
                        if (obj != null)
                            objList.Add((T)obj);
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine("Exception:{0}", ex.Message);
                    }
                }
            }
            return objList;
        }

然后調用時這樣子:
Program.FireEvent<string>(deg, 100)
3、在委托和異步調用這節,關於時間方面,樓主是不是筆誤呢,沒有使用異步的時候,應該是大概9秒吧,1+2+1+2+3的結果吧。而使用異步應該就是6秒,即1+2+3吧。
以上是陸續看完之后的想法!
 
 

  回复  引用  查看    
#22楼[楼主]2009-01-08 17:37 | Jimmy Zhang      
@凯锐
嗯,第2点用泛型方法是更加好一些 ~~ 其他的嘛,我暂时没有时间去查验了,先这样吧。

  回复  引用    
#23楼2009-02-24 19:55 | wangwei240[未注册用户]
谢谢您的贡献!看后受益不少。。。
  回复  引用  查看    
#24楼2009-03-10 12:04 | 小李程式?      
绝对的好文!
  回复  引用    
#25楼2009-03-16 19:39 | MK[未注册用户]
好帖
  回复  引用    
#26楼2009-03-26 00:25 | 求索风
昨天晚上上自习看到委托和事件就卡住了,有点迷糊,回寝室后g.cn搜到大哥的文章,看了之后终于看到了点东西。多谢大哥了!
  回复  引用    
#27楼2009-05-02 16:40 | 云南人氏[未注册用户]
非常板扎,大哥,希望把这些东东整理成书,我一定会好好拜读的,,,,,,,,,,
  回复  引用    
#28楼2009-05-07 15:39 | 初学c#
请问一下,在以c#中怎样处理距阵算法、微、积分。
  回复  引用  查看    
#29楼2009-05-15 15:07 | 阳光有约      
写的很好 每天看看你的文章 每天进步一点点 ,大哥要多写些这样的啊
要不就出本数吧!

  回复  引用    
#30楼2009-06-17 03:33 | 扎克斯[未注册用户]
断断续续用了1周看完了。

好强.

写的真细致.

感谢大牛.

我把这篇网页保存了以后发现不能在别的机器上脱机浏览哦,怎么回事?
我把这篇网页保存了以后发现不能在别的机器上脱机浏览哦,怎么回事?
  回复  引用    
#33楼2009-07-02 21:54 | JimmyZhang2[未注册用户]
@下载了以后看不了

因为它连接的是远程的,你从这里看就可以看了:

http://www.tracefact.net/CSharp-Programming/Delegates-and-Events-in-CSharp.aspx

  回复  引用  查看    
#34楼2009-07-03 00:12 | helloj2ee      
你的事件和委托写的非常好 我看了真的觉的很好。
也欢迎你参观我的博客http://www.cnblogs.com/helloj2ee/" target="_new">http://www.cnblogs.com/helloj2ee/

  回复  引用    
#35楼2009-07-03 23:05 | 无为而为
真不错。
发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

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

0 1274342




历史上的今天:
2007-08-22 [译]C# 中的枚举器

相关文章:

相关链接: