ChinaDHF
学而不思则罔,思而不学则殆。
posts - 41,  comments - 215,  trackbacks - 5
这几天学习委托的时候,突然冒出了一个很有趣的想法,写出来与大家分享:

有一天,我饿了,虽然我拥有白菜和猪肉,本来能够做一道美味的白菜炖猪肉,但我却没有把白菜和猪肉做成白菜炖猪肉的方法。这时,我想到了“委托”:

我先声明了一个委托,为了让别人能够知道,我将其声明为public:

public delegate 白菜炖猪肉 cookHandler(白菜 m,猪肉 n);

这样,不管是谁,只要他有能把白菜和猪肉变成白菜炖猪肉的方法,他的这个方法便可以为我所用。正巧我的一个哥们FriendA就有这个方法,于是,他的这个方法成了我的“委托”的实例:

cookHandler c=new cookHandler(FriendA.cook);

于是,在输入白菜和猪肉后,我得到了我想要的白菜炖猪肉:

猪肉炖白菜 tmp;
tmp
=c(白菜,猪肉);

简直太棒了。

可是后来,我发现每次都需要去委托居然很累,还有没有更好的办法呢,比喻说,只要我一饿了,就有某个哥们的某个方法让我得到白菜炖猪肉。一想到这,别说,还真有--那就是:事件。

public event cookHandler  hungryEvent;

反正和FriendA比较熟,这件事就交给他好了:

this.hungryEvent+=new cookHandler(FriendA.cook);
   猪肉炖白菜 tmp;
tmp
=hungryEvent(白菜,猪肉);

原来天底下竟有这么好的事,只要我喊一声“我饿了”,总能得到美味可口的白菜炖猪肉。(现实中要是这样多好啊)

然而好景不久,突然有一天,或许是朋友不再乐意这样无条件为我服务,或许是什么原因,总之,竟然出现了:

this.hungryEvent-=new cookHandler(FriendA.cook);

结果,当我如往常一样喊了一声“我饿了”的时候,不但没得到白菜炖猪肉,还白饿了一顿,差点使得系统崩溃。

从这以后,我变得聪明了:

if (hungryEvent!=null)
{
    白菜炖猪肉 tmp;
    tmp
=hungryEvent(白菜,猪肉);
}

每次在喊“我饿了”以前,我总是先看一下有没有人已经愿意用他的方法做我的委托的实例。怎么样,这下安全了吧?

本文纯属笑谈,如有不当之处,敬请谅解。

posted on 2005-12-23 20:22 东海风 阅读(233) 评论(2)  编辑 收藏

FeedBack:
2006-07-31 10:58 | Jeky(李彬) [未注册用户]
我对委托还不了解。向你学习!
  回复  引用    
2006-07-31 13:44 | Jeky(李彬) [未注册用户]
不错!刚才了解了一下委托,又来看你这篇文章,感觉很不错!
  回复  引用    

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2005-12-23 21:46 编辑过


相关链接:
 



计数器:

阿里妈妈再掀疯狂采购风,网站广告位严重告急,急召天下站长


<2005年12月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

与我联系

搜索

 

常用链接

留言簿(3)

随笔档案(39)

收藏夹(12)

技术网站

阅读排行榜