惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
V
Visual Studio Blog
P
Privacy International News Feed
月光博客
月光博客
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
L
Lohrmann on Cybersecurity
N
News and Events Feed by Topic
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Apple Machine Learning Research
Apple Machine Learning Research
阮一峰的网络日志
阮一峰的网络日志
Webroot Blog
Webroot Blog
T
Threatpost
宝玉的分享
宝玉的分享
The Last Watchdog
The Last Watchdog
小众软件
小众软件
L
LINUX DO - 最新话题
C
Cisco Blogs
T
Troy Hunt's Blog
Schneier on Security
Schneier on Security
酷 壳 – CoolShell
酷 壳 – CoolShell
www.infosecurity-magazine.com
www.infosecurity-magazine.com
雷峰网
雷峰网
G
GRAHAM CLULEY
有赞技术团队
有赞技术团队
Know Your Adversary
Know Your Adversary
博客园 - 叶小钗
罗磊的独立博客
V
V2EX
博客园 - Franky
P
Proofpoint News Feed
SecWiki News
SecWiki News
腾讯CDC
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Jina AI
Jina AI
博客园 - 三生石上(FineUI控件)
S
Secure Thoughts
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Google DeepMind News
Google DeepMind News
Attack and Defense Labs
Attack and Defense Labs
人人都是产品经理
人人都是产品经理
The Cloudflare Blog
PCI Perspectives
PCI Perspectives
V2EX - 技术
V2EX - 技术
Google DeepMind News
Google DeepMind News
Last Week in AI
Last Week in AI
aimingoo的专栏
aimingoo的专栏
Cisco Talos Blog
Cisco Talos Blog
N
News and Events Feed by Topic
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
S
SegmentFault 最新的问题

博客园 - 鱿鱼

关于在VS2005环境下无法从源视图切换到设计视图的解决方案(转) - 鱿鱼 - 博客园 DotNet2005快捷键 什么是托管 LINQ,语言级集成查询(Language INtegrated Query) ORM(Object Relational Mapping) Step by Step 创建一个简单的Silverlight应用程序(转自微软学生中心) SiliverLight的安装配置 预览大尺寸图片的解决方案 uploadfile和Image实现图片预览 - 鱿鱼 - 博客园 datalist分页 - 鱿鱼 - 博客园 解决datalist中radiobutton单选的问题 关于ModalPopup控件不能调用CS事件代码的问题 对.NET中三层结构的解释 日期格式的正则表达式 关于判断sql查询记录集为空的问题 无刷新聊天室(asp.net1.1) 无刷新聊天室简易版(asp.net2.0) asp.net2.0更改login控件对密码安全性的要求(转) 一个上传文件的免费空间(转)
.NET委托:一个C#睡前故事
鱿鱼 · 2007-06-17 · via 博客园 - 鱿鱼

从前,在南方一块奇异的土地上,有个工人名叫彼得,他非常勤奋,对他的老板总是百依百顺
但是他的老板是个吝啬的人,从不信任别人,坚决要求随时知道彼得的工作进度,以防止他偷懒
但是彼得又不想让老板呆在他的办公室里站在背后盯着他
于是就对老板做出承诺:无论何时,只要我的工作取得了一点进展我都会及时让你知道
彼得通过周期性地使用“带类型的引用”(原文为:“typed reference” 也就是delegate??)“回调”他的老板来实现他的承诺,如下:

class Worker {
public void Advise(Boss boss) { _boss = boss; }
public void DoWork() {
Console.WriteLine(“工作: 工作开始”);
if( _boss != null ) _boss.WorkStarted();

Console.WriteLine(“工作: 工作进行中”);
if( _boss != null ) _boss.WorkProgressing();

Console.WriteLine(
"“工作: 工作完成”");
if( _boss != null ) {
int grade = _boss.WorkCompleted();
Console.WriteLine(“工人的工作得分=” 
+ grade);
}

}

private Boss _boss;
}


class Boss {
public void WorkStarted() /* 老板不关心。 */ }
public void WorkProgressing() /*老板不关心。 */ }
public int WorkCompleted() {
Console.WriteLine(“时间差不多!”);
return 2/* 总分为10 */
}

}


class Universe {
static void Main() {
Worker peter 
= new Worker();
Boss boss 
= new Boss();
peter.Advise(boss);
peter.DoWork();

Console.WriteLine(“Main: 工人工作完成”);
Console.ReadLine();
}

}