频 道 直 达 - 新闻 - 培训 - 软件 - 教程 - 前沿 - 组网 - 系统应用 - 安全 - 编程 - 存储 - 操作系统 - 数据库 - 服务器 - 专题 - 产品 - 案例库 - 读书 - 博客 - BBS
51CTO.COM_中国最大的网络技术网站
找资料:

1.1.4 匿名方法

作者: 方兵 出处:机械工业出版社  2008-05-14 17:11    砖    好    评论   进入论坛
阅读提示:《ASP.NET 2.0网站开发技术详解》第1章主要讲述的是NET 2.0的新特性,本节为您介绍的是匿名方法。

1.1.4 匿名方法

与匿名方法相对的是命名方法。在平时开发当中,我们见到最多的是命名方法,在.NET 2.0之前,我们也只有命名方法的概念。命名方法最显著的特征是有方法签名,如下所示:

public System .Collections.IEnumerable BuildCollection()
{
……
}

因为有方法签名,于是我们可以在很多地方调用,也就是说可以实现代码复用,这是命名方法带给我们的一个非常便利的地方。

而匿名方法则不具有方法签名,不能在多个地方调用同一段代码,也就不能实现代码复用,但是它可以给我们带来另外一些便利:

(1)不必创建单独的方法,因此减少了实例化委托所需的编码系统开销。

(2)匿名方法中变量的作用范围不局限在方法内部,可以在不同的方法成员之间共享某个局部状态,这可能有一点儿难理解,我们来看下面的代码:

int n=0;
Del d=delegate(){System .Console.WriteLine("Copy #:{0}",++n);};
Del d=delegate(){System .Console.WriteLine("Copy #:{0}",--n);};

如果使用命名方法,除非将输入参数n以引用方式传入,否则将不能共享n的值。这里变量n被称为外部变量或捕获变量,与局部变量不同,外部变量的生命周期一直持续到引用该匿名方法的委托符合垃圾回收的条件为止。对n的引用是在创建该委托时捕获的。

(3)将代码段作为参数传递,要将代码块传递为委托参数,创建匿名方法则是惟一的方法。例如:

//为单击事件创建处理程序
button1.Click+=delegate(System .Object o,System .EventArgs e)
{System .Windows.Forms.MessageBox.Show("Click!");};

匿名方法有以上这些优点,同时也会有一些局限性,在使用时一定要先权衡得失,再决定使用哪一种方式:

(1)匿名方法的概念使用是和代理联系在一起的,如果不是在使用代理的地方,那么便用不上匿名方法。

(2)匿名方法因为没有方法签名,所以不能在多处调用同一段代码,也就不能实现代码复用,因此不适合匿名方法块中代码比较多或者需要重用的情况。

(3)在目标在块外部的匿名方法块内使用跳转语句(如goto、break或continue)是错误的。在目标在块内部的匿名方法块外部使用跳转语句(如goto、break或continue)也是错误的。

【责任编辑:夏书 TEL:(010)68476606】

回书目   上一节   下一节
专题
ASP.NET 2.0基础开发指南
微软的Ajax:Atlas(ASP.net AJAX)
ASP.NET开发教程
ASP实用开发教程
ASP.NET 2.0网站开发技术详解
我也说两句

匿名发表

(如果看不清请点击图片进行更换)


中 国 最 大 的 网 络 技 术 网 站 ·
技 术 成 就 梦 想
订阅技术快讯
电子杂志下载
名称:SQL Server数据库管理精品黄皮书
简介:书中文章经过精挑细选,便于用户能根据自己的实际工作和学习,快速在本书寻找到相关资料。内容涵盖了SQL Server的安装与升级、语句查询、数据备份和恢复、自动化任务、数据同步、数据字典、安全和预防、性能和优化、集群等各方面应用信息,以及DBA管理人员在数据库管理工作中
名称:2007路由技术大全
简介:《2007路由技术大全》由51CTO.com网站特别策划制作,该书包括路由器技术、路由器产品、路由器配置、安全设置、路由器故障处理、路由器密码恢复,以及广大网友在实践使用中的心得经验和技巧文章,内容注重实用性,适用于初学者入门,也适合多年从业者提高,是一本实践和理论完
名称:网络安全精品应用黄皮书
简介:《2007精品网络安全黄皮书》包括了9个大类24个小类, 800余篇文章,内容包含了熊猫烧香病毒、DDOS攻击、ARP病等热点问题的介绍及解决方案。从病毒查杀、防范、系统、数据等各方面的安全设置到黑客技术的了解、防范,涉及到了安全应用的全部领域, 由浅至深内容全面。
二手设备与仿冒设备谁更火
二手设备与仿冒设备谁更火
汶川大地震 IT技术人为同胞生命祈福
汶川大地震 IT技术人为同胞生..
网络故障排除宝典
网络故障排除宝典
· 网络故障排除宝典
· 访问控制列表(ACL)介绍
· 视频访谈:网管员如何踏..
· 首届中国IT工程师生态..
· 华为路由器配置
· 全面解析35岁技术人的..
· 企业数据恢复指南
· 龙芯要做中国的“奔腾”
· 2008年上半年全国软考..
· 交换机故障解决指南
· Vista SP1对决XP SP3
· LAMP技术精解
· 微软出价446亿美元收购..
· AIX操作系统管理应用(..
· 华为员工自杀频频拷问..
· 三层交换技术专题
ARP攻击防范与解决方案
ARP攻击防范与解决方案
iSCSI应用与发展
iSCSI应用与发展
SQL Server 2008/2005全解
SQL Server 2008/2005全解
· SQL Server 2008/2005..
· SOA 面向服务架构
· SQL Server 2008/2005..
· iSCSI应用与发展
· RAID——磁盘阵列基础
· Apache技术专题
· 三层交换技术专题
· SQL Server入门到精通
· Apache技术专题
· 国际文档格式标准开战
· 路由器设置与口令恢复
· 打造安全服务器
· PHP开发应用手册
· SOA 面向服务架构
· 企业数据恢复指南
· ADSL应用面面俱到
ARP攻击防范与解决方案
ARP攻击防范与解决方案
SQL Server 2008/2005全解
SQL Server 2008/2005全解
iSCSI应用与发展
iSCSI应用与发展
· iSCSI应用与发展
· SQL Server入门到精通
· SQL Server 2008/2005..
· SOA 面向服务架构
· Apache技术专题
· iSCSI应用与发展
· 三层交换技术专题
· Apache技术专题
· 企业数据恢复指南
· RAID——磁盘阵列基础
· 路由器设置与口令恢复
· SOA 面向服务架构
· ADSL应用面面俱到
· ADSL应用面面俱到
· 反垃圾邮件技术应用
· 访问控制列表(ACL)介绍