Temptation
寻道之路 , 与您同行 !
博客园
::
首页
::
新随笔
::
联系
::
订阅
::
管理
::
321 随笔 :: 0 文章 :: 171 评论 :: 3 Trackbacks
[讨论] C#的委托
1.委托是什么?
可以理解为对象的一种新的类型,类似于 C 或 C++ 中的函数指针。
2.什么时候使用委托?
把方法传送给其他方法的时候使用它。
我们知道方法的参数主要用于传递数据,比如: int I = int.Parse("99"),其中调用了System.Int32类的静态方法Parse()。那么把一个方法在作为参数传给另一个方法,怎么传呢?
最简单的途径就是把方法名作为参数传递给其他的方法。C#规定,如果要传递方法,必须把方法的细节封装在一种新的类型对象中,即委托。使用委托可以将方法引用封装在委托对象内,然后可以将该委托对象传递给可调用所引用方法的代码,而不必在编译时知道将调用哪个方法。
委托对象的一个有用属性是,它们可以:
“+”运算符用来组合。
组合的委托可调用组成它的那两个委托。只有相同类型的委托才可以组合。
“-”运算符用来从组合的委托移除组件委托。
例:
using
System;
delegate
void
MyDelegate(
string
s );
class
MyClass
{
public
static
void
Hello(
string
s )
{
Console.WriteLine(
" Hello, {0}!"
, s );
}
public
static
void
Goodbye(
string
s )
{
Console.WriteLine(
" Goodbye, {0}!"
, s );
}
public
static
void
Main( )
{
MyDelegate a, b, c, d;
// Create the delegate object a that references
// the method Hello:
a =
new
MyDelegate( Hello );
// Create the delegate object b that references
// the method Goodbye:
b =
new
MyDelegate( Goodbye );
// The two delegates, a and b, are composed to form c:
c = a + b;
// Remove a from the composed delegate, leaving d,
// which calls only the method Goodbye:
d = c - a;
Console.WriteLine(
"Invoking delegate a:"
);
a(
"A"
);
Console.WriteLine(
"Invoking delegate b:"
);
b(
"B"
);
Console.WriteLine(
"Invoking delegate c:"
);
c(
"C"
);
Console.WriteLine(
"Invoking delegate d:"
);
d(
"D"
);
}
}
输出
Invoking
delegate
a:
Hello, A!
Invoking
delegate
b:
Goodbye, B!
Invoking
delegate
c:
Hello, C!
Goodbye, C!
Invoking
delegate
d:
Goodbye, D!
posted on 2006-04-07 11:22
temptation
阅读(76)
评论(0)
编辑
收藏
所属分类:
C#技术
社区
新闻
新用户注册
刷新评论列表
标题
姓名
主页
Email
(只有博主才能看到)
验证码
*
看不清,换一张
[
登录
][
注册
]
内容(请不要发表任何与政治相关的内容)
Remember Me?
登录
使用高级评论
新用户注册
返回页首
恢复上次提交
[使用Ctrl+Enter键可以直接提交]
相关文章:
C# 中的委托和事件
C#下如何实现服务器+客户端的聊天程序
C#委托,事件理解入门 (译稿)
C#委托之个人理解
C#委托
C#委托和事件
相关链接:
所属分类的其他文章:
【原】 C#关键字 Ref 学习笔记
[**开同**看] 配置EditPlus与NAnt构建轻型的.NET开发环境
[**开同**看] Visual C#程序员基础问题
[转] 获取数据库中的所有表(C#)
[抄给*开同*看] 如何循序渐进向DotNet架构师发展
[转] 《Web Calendar ver 3.0 网页日历》 源代码提供!
[转] 把.NET程序部署到没有安装.NET Framwork的机器上
[ 转] 身份证号码验证web服务--开同,验证一下正确性!!
[转] C#编程实践
[转] 收藏两句经典代码 (C#)
最新IT新闻:
消息称MySQL创始人已向Sun提交辞呈
谷歌Chrome浏览器即将更换LOGO颜色?
淘宝网合并阿里妈妈 专家称阿里巴巴或有新战略
微软研究院发布 AutoCollage - 整理并融合照片
2008年9月5日科技博客精选
博客园新闻频道
博客园首页
社区
<
2006年4月
>
日
一
二
三
四
五
六
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
公告
天气预报
与我联系
发短消息
搜索
常用链接
我的随笔
我的空间
我的短信
我的评论
更多链接
我的参与
我的新闻
最新评论
我的标签
留言簿
(6)
给我留言
查看留言
我参加的小组
设计模式
蛋蛋日语学堂
程序员音乐空间
每日一句英语
ASP.NET
每天一句日语
软件工程师日语
读书(Books)
OOAD&UML
asp.net控件开发技术
我参与的团队
上海.NET俱乐部(3/2233)
数据库团队(0/251)
随笔分类
(318)
"活"在日本(13)
(rss)
ASP.Net 开发(C#)(17)
(rss)
ASP.Net 开发(VB.Net) (2)
(rss)
ASP开发(9)
(rss)
C#技术(21)
(rss)
CGI技术(1)
(rss)
Delphi 精华(2)
(rss)
Design Pattern
(rss)
Eclipse 学习(2)
(rss)
J2EE 技术(EJB方向)(3)
(rss)
J2EE 技术(JSP+Servlet+JavaBean方向) (9)
(rss)
J2EE 技术(Struts+Hibernate+Spring方向) (3)
(rss)
J2SE 技术(12)
(rss)
JavaScript技术(8)
(rss)
Ruby on Rails
(rss)
SharpDevelop(4)
(rss)
UML 学习(1)
(rss)
VB 数据库开发(18)
(rss)
VB 游戏开发
(rss)
VC++ 游戏开发 (1)
(rss)
串口通信(C#方向)
(rss)
串口通信(JAVA方向)
(rss)
串口通信(VB方向)(4)
(rss)
电子竞技(4)
(rss)
怀旧照片
(rss)
计算机日常应用(软件) (5)
(rss)
计算机日常应用(网络) (4)
(rss)
计算机日常应用(硬件)(5)
(rss)
面试题汇总(25)
(rss)
日语学习(11)
(rss)
数据库--MSSQL(33)
(rss)
数据库--MySQL
(rss)
数据库--Oracle(6)
(rss)
体育竞技(1)
(rss)
我的思想(11)
(rss)
杂七杂八(83)
(rss)
随笔档案
(321)
2008年8月 (1)
2008年7月 (1)
2008年4月 (4)
2008年3月 (4)
2008年2月 (1)
2008年1月 (5)
2007年12月 (5)
2007年11月 (4)
2007年10月 (9)
2007年9月 (6)
2007年8月 (4)
2007年7月 (9)
2007年6月 (7)
2007年5月 (10)
2007年4月 (4)
2007年3月 (6)
2007年2月 (22)
2007年1月 (6)
2006年12月 (5)
2006年11月 (10)
2006年10月 (5)
2006年9月 (23)
2006年8月 (46)
2006年7月 (9)
2006年6月 (31)
2006年5月 (27)
2006年4月 (34)
2006年3月 (23)
收藏夹
(6)
【.Net 相关资源】(6)
(rss)
朋友的Blog
╃小〥斌╄
--对日外包的园友
BoyLee
--对日外包的园友
Catherine's BLOG
--Catherine,我就是我,颜色不一样的烟火 !
Eternity
--一个和我非常象的人
Moneystar的专栏--NFramework
Xia jie`s Blog
混子的BLOG
老谷的Blog
--专注于.net开发
刘亨利的Blog
--专注于工业控制的研究
龙潜's blog
--才子
吕震宇老师的Blog
钱宇老师(赵帆的女友)
--专注于初中语文教学
谭佳佳老师
--专注于小学语文教学
汪晓芬老师
--专注于小学数学教学
小山的Blog
积分与排名
积分 - 128724
排名 - 296
最新随笔
1. 【原】 VS2005/VWD2005调试错误“无法附加,绑定句柄无效”的解决
2. 【原】IP地址存储问题
3. 【原】有线通设定
4. 【原】 C#关键字 Ref 学习笔记
5. 【转】 asp.net数据导出EXCEL
6. 【原】Sql中时间处理函数 DateAdd & DateDiff
7. [转] 为GridView删除添加确认对话框
8. [转] SQL Server中的行列转换问题
9. [转] 对面向对象设计原则的总结
10. [原] Excel(VBA)中数据的非科学记数法显示
11. [原] Excel中计算2个日期间的时间间隔
12. 【转】 简单的3个SQL视图搞定所有SqlServer数据库字典
13. [*原*] 2个面试问题--与BoyLee的交流
14. [转] 股票基础知识
15. [转] 纯代码取得本机IP地址
最新评论
1. re: [转] 130道C#面试题
对。。。好多错的。奶奶的。不是肯人啊
switch 可以用字符串的
--rian
2. re: [转] 如何用VB.Net创建一个三层的数据库应用程序
请问: CType(Me.Client_DataSet, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.Data...
--WCF群组博客
3. re: [***怀念母校--安徽理工大学(淮南矿院)***] 想回到过去...
我也是从淮南毕业的,不过不是矿院,而是淮南师院(以前叫师专)
--yudiefly
4. re: [**奇文共赏**参考理解] 据说看五遍能懂的人智商 > 200
我相信我的智商超过200,但是没耐心看下去~!
--孔子印章
5. re: [转] 解析oracle的ROWNUM -- 作者: chen_liang
good article, thanks.
--jackie zhuhai
阅读排行榜
1. [转] 能ping通,但不能上网.(8897)
2. [转] left join/right join/inner join操作演示 (6738)
3. [转] 硬盘工具DiskMan使用图解(6094)
4. [转] IIS问题:Server Application Error 的解决(4518)
5. [转] 一张废手机卡的作用大全 (没试过)(4057)
评论排行榜
1. [转] 解析oracle的ROWNUM -- 作者: chen_liang(16)
2. [***怀念母校--安徽理工大学(淮南矿院)***] 想回到过去...(13)
3. [转] left join/right join/inner join操作演示 (10)
4. [转] C#试题(6)
5. [转] 图解eclipse+myelcipse开发EJB (6)
Powered by:
博客园
Copyright © temptation