青草堂
SNS门外汉
基本类型--委托(一)
15
.
1
初识委托
//
声明一个委托,它的实例引用一个方法,该方法接受一个Int32的参数并返回void
internal
delegate
void
Feedback(Int32 value);
public
sealed
class
Program
{
public
static
void
Main()
{
StaticDelegateDemo();
InstanceDelegateDemo();
ChainDelegateDemo1(
new
Program());
ChainDelegateDemo2(
new
Program());
}
//
委托调用静态回调方法
private
static
void
StaticDelegateDemo()
{
Console.WriteLine(
"
---StaticDelegateDemo---
"
);
Counter(
1
,
3
,
null
);
Counter(
1
,
3
,
new
Feedback(FeedBackToConsole));
Counter(
1
,
3
,
new
Feedback(FeedBackToMsgBox));
Console.ReadLine();
}
//
委托调用实例回调方法
private
static
void
InstanceDelegateDemo()
{
Console.WriteLine(
"
---InstanceDelegateDemo---
"
);
Program p
=
new
Program();
Counter(
1
,
3
,
new
Feedback(p.FeedBackToFile));
Console.ReadLine();
}
//
顺序调用多个静态、实例方法
private
static
void
ChainDelegateDemo1(Program p)
{
Console.WriteLine(
"
---ChainDelegateDemo1---
"
);
Feedback fb1
=
new
Feedback(FeedBackToConsole);
Feedback fb2
=
new
Feedback(FeedBackToMsgBox);
Feedback fb3
=
new
Feedback(p.FeedBackToFile);
Feedback fbChain
=
null
;
fbChain
=
(Feedback)Delegate.Combine(fbChain, fb1);
fbChain
=
(Feedback)Delegate.Combine(fbChain, fb2);
fbChain
=
(Feedback)Delegate.Combine(fbChain, fb3);
Counter(
4
,
5
, fbChain);
Console.WriteLine();
fbChain
=
(Feedback)Delegate.Remove(fbChain,
new
Feedback(FeedBackToMsgBox));
Counter(
6
,
7
, fbChain);
Console.ReadLine();
}
//
顺序调用多个静态、实例方法
private
static
void
ChainDelegateDemo2(Program p)
{
Console.WriteLine(
"
---ChainDelegateDemo2---
"
);
Feedback fb1
=
new
Feedback(FeedBackToConsole);
Feedback fb2
=
new
Feedback(FeedBackToMsgBox);
Feedback fb3
=
new
Feedback(p.FeedBackToFile);
Feedback fbChain
=
null
;
fbChain
+=
fb1;
fbChain
+=
fb2;
fbChain
+=
fb3;
Counter(
8
,
9
, fbChain);
Console.WriteLine();
fbChain
-=
new
Feedback(FeedBackToMsgBox);
Counter(
10
,
11
, fbChain);
Console.ReadLine();
}
//
private
static
void
Counter(Int32 from, Int32 to, Feedback fb)
{
for
(
int
i
=
from; i
<=
to; i
++
)
{
if
(fb
!=
null
)
fb(i);
}
}
private
static
void
FeedBackToConsole(Int32 value)
{
Console.WriteLine(
"
控制台输出:
"
+
value);
}
private
static
void
FeedBackToMsgBox(Int32 value)
{
Console.WriteLine(
"
消息框显示:
"
+
value);
}
private
void
FeedBackToFile(Int32 value)
{
StreamWriter sw
=
new
StreamWriter(
"
C:/FeedBackToFile.txt
"
,
true
);
sw.WriteLine(
"
文件显示:
"
+
value);
sw.Close();
}
}
15
.
2
使用委托来回调静态方法
15
.
3
使用委托回调实例方法
15
.
4
委托揭秘
15
.
5
使用委托回调多个方法(链式)
posted on 2008-05-27 09:44
青羽
阅读(196)
评论(0)
编辑
收藏
所属分类:
J
√
都是DotNet
、
N
√
CLR Via
社区
新闻
新用户注册
刷新评论列表
标题
姓名
主页
Email
(只有博主才能看到)
验证码
*
看不清,换一张
[
登录
][
注册
]
内容(请不要发表任何与政治相关的内容)
Remember Me?
登录
使用高级评论
新用户注册
返回页首
恢复上次提交
[使用Ctrl+Enter键可以直接提交]
所属分类的其他文章:
·
lock后日志干净了
·
CLR实用特征--自动内存管理(垃圾收集)
·
CLR实用特征--异常
·
基本类型--可空值类型
·
基本类型--泛型(二)
·
基本类型--泛型(一)
·
一个小功能:获取一段汉字的拼音首字母
·
基本类型--委托(二)
·
基本类型--委托(一)
·
基本类型--接口(二、EIMI)
最新IT新闻:
·
第一财经周刊:当前互联网世界正处无秩序时代
·
Visual Studio 2008 SDK 1.1 发布
·
死敌VMware变身微软认证计划新成员
·
英特尔雅虎开发网络计算机频道
·
Windows Live视频邮件9月9日开始测试
博客园新闻频道
博客园首页
社区
导航
博客园
首页
新随笔
联系
订阅
管理
公告
流量
V
与我联系
发短消息
搜索
常用链接
我的随笔
我的空间
我的短信
我的评论
更多链接
我的文章
我的参与
最新评论
我的标签
留言簿
给我留言
查看留言
我参与的团队
SharePoint团队(0/721)
DNN团队博客(2/320)
.NET 控件与组件开发(1/1360)
ASP.NET AJAX (Atlas)学习(0/1340)
报表与图表团队(0/174)
O/R Mapping团队(0/208)
Silverlight学习与研究(0/282)
数据库团队(4/234)
博客园创业者(1/40)
随笔分类
(209)
A
√
DHTML(3)
(rss)
B
√
JavaScript(15)
(rss)
C
√
Prototype(1)
(rss)
D
√
JQuery
(rss)
E
√
Ajax(6)
(rss)
F
√
XML(13)
(rss)
G
√
O/R Mapping(5)
(rss)
H
√
Hibernate&Spring(4)
(rss)
I
√
SharePoint(18)
(rss)
J
√
都是DotNet(51)
(rss)
K
√
Java起步(4)
(rss)
L
√
SQL Server(23)
(rss)
M
√
数据结构(1)
(rss)
N
√
CLR Via(27)
(rss)
O
√
CallCenter(1)
(rss)
P
√
UML(1)
(rss)
Q
√
SilverLight
(rss)
R
√
LINQ
(rss)
S
√
技术之外(28)
(rss)
T
√
Community Server
(rss)
U
√
好文转载(3)
(rss)
V
√
Oracle(1)
(rss)
W
√
计算机基础(2)
(rss)
X
√
SNS研究(2)
(rss)
Y
√
PetShop
(rss)
随笔档案
(179)
2008年8月 (1)
2008年7月 (6)
2008年6月 (10)
2008年5月 (22)
2008年4月 (9)
2008年3月 (5)
2008年2月 (1)
2008年1月 (1)
2007年12月 (2)
2007年11月 (1)
2007年10月 (1)
2007年9月 (1)
2007年8月 (1)
2007年7月 (11)
2007年6月 (4)
2007年5月 (7)
2007年4月 (7)
2007年3月 (2)
2007年2月 (2)
2006年12月 (3)
2006年11月 (19)
2006年10月 (27)
2006年9月 (36)
文章分类
(31)
北京房子(3)
(rss)
网上拾贝(28)
(rss)
收藏夹
(147)
博客及站点收藏(35)
(rss)
交流类网站(23)
(rss)
我的收藏(89)
(rss)
互联网
keso-5g
阿北-豆瓣
飞扬新锐--贝壳
蒋涛--CSDN
老白--5g
李彦宏--baidu
刘韧--DoNews
麦田-蚂蚁
孟岩--财帮子
腾讯_总裁俱乐部
圈内
Scott Guthrie
Scott Guthrie中文
visibone
金雪根
李建忠
孟子E章
友情链接
Beyond歌迷社区
Lee-hp
QQ博客
小熊
园内
Felix
怪怪
彭斌
张逸
积分与排名
积分 - 76741
排名 - 514
最新评论
1. re: 专家门诊——ASP.NET开发答疑200问
不错
--X3
2. re: McAfee无法更新病毒库
找不到Network Associates.
--YMZ100
3. re: JavaScript总结(2)-网页上显示时间
ddgg fssfskjky
--不管值不值得我都会爱你到老
4. re: 免费得QQ秀
要好看
--柏拉图D爱恋
5. re: 资源收集
mark.
--傲然林
6. re: 免费得QQ秀
我想要个好的QQ秀... 希望能满足我`` 黑客的小子`就别想来套号` 本QQ早以设有木马`~~...
--沈
7. re: Javascript模态窗口实现
好东西!谢谢
--stg609
8. re: 获取某命名规则下一系列表的总条数
不用那么复杂的了。Use TestgoDeclare @T Table(id int Identity(1,1),ObjectName nvarchar(128),Total int)Insert I...
--OK_008
9. re: 使用通配符查询
\t 是?
--唐湘廷
10. re: Ajax 缓存
在ajax发送请求前加上xmlHTTP.setRequestHeader("If-Modified-Since","0");可以禁止缓存
--Jamie
11. re: javscript中的数组-您知道他们的值吗?
@Sapphire
我可以写成这样:var a=[5];alert(a);能明白为什么是5了吧。
--青羽
12. re: javscript中的数组-您知道他们的值吗?
5是怎么来的 ?楼主也给解释解释为什么呀?
--Sapphire
13. re: 专家门诊——ASP.NET开发答疑200问
感谢啊~~这是挺不错的一本书~~
--lex
阅读排行榜
1. 史努比 2.0轻松搞定pci.sys丢失(2611)
2. sql统计-关于学生成绩(1767)
3. 专家门诊——ASP.NET开发答疑200问(1547)
4. SharePoint初探-SharePoint,WSS,SPS概述(1)(1342)
5. SharePoint初探-sharepoint 安装宝典(2)(1284)
评论排行榜
1. 专家门诊——ASP.NET开发答疑200问(17)
2. 寻找asp.net2.0空间~~(11)
3. sql统计-关于学生成绩(10)
4. Gmail邀请(9)
5. 出差小记(一)(7)