1.1.4 匿名方法
与匿名方法相对的是命名方法。在平时开发当中,我们见到最多的是命名方法,在.NET 2.0之前,我们也只有命名方法的概念。命名方法最显著的特征是有方法签名,如下所示:
public System .Collections.IEnumerable BuildCollection() |
因为有方法签名,于是我们可以在很多地方调用,也就是说可以实现代码复用,这是命名方法带给我们的一个非常便利的地方。
而匿名方法则不具有方法签名,不能在多个地方调用同一段代码,也就不能实现代码复用,但是它可以给我们带来另外一些便利:
(1)不必创建单独的方法,因此减少了实例化委托所需的编码系统开销。
(2)匿名方法中变量的作用范围不局限在方法内部,可以在不同的方法成员之间共享某个局部状态,这可能有一点儿难理解,我们来看下面的代码:
int n=0; |
如果使用命名方法,除非将输入参数n以引用方式传入,否则将不能共享n的值。这里变量n被称为外部变量或捕获变量,与局部变量不同,外部变量的生命周期一直持续到引用该匿名方法的委托符合垃圾回收的条件为止。对n的引用是在创建该委托时捕获的。
(3)将代码段作为参数传递,要将代码块传递为委托参数,创建匿名方法则是惟一的方法。例如:
//为单击事件创建处理程序 |
匿名方法有以上这些优点,同时也会有一些局限性,在使用时一定要先权衡得失,再决定使用哪一种方式:
(1)匿名方法的概念使用是和代理联系在一起的,如果不是在使用代理的地方,那么便用不上匿名方法。
(2)匿名方法因为没有方法签名,所以不能在多处调用同一段代码,也就不能实现代码复用,因此不适合匿名方法块中代码比较多或者需要重用的情况。
(3)在目标在块外部的匿名方法块内使用跳转语句(如goto、break或continue)是错误的。在目标在块内部的匿名方法块外部使用跳转语句(如goto、break或continue)也是错误的。
| 回书目 上一节 下一节 |
|
· 网络工程师自测获奖名.. · 08年4月各大网上书店及.. · 系统分析师自测获奖名.. · Linux结课考试自测获奖.. · 上周Linux系统命令的使.. · 上周真题冲刺测试获奖.. |
· 全国计算机等考四级模.. · 08年3月各大网上书店及.. · 网络工程师模拟测试获.. · 全国计算机软考考试指.. · 3月24日WCF聊天活动 积.. · 全国计算机等级考试四.. |
|
||||
| · 网络故障排除宝典 · 访问控制列表(ACL)介绍 · 视频访谈:网管员如何踏.. · 首届中国IT工程师生态.. · 华为路由器配置 · 全面解析35岁技术人的.. · 企业数据恢复指南 · 龙芯要做中国的“奔腾” |
· 2008年上半年全国软考.. · 交换机故障解决指南 · Vista SP1对决XP SP3 · LAMP技术精解 · 微软出价446亿美元收购.. · AIX操作系统管理应用(.. · 华为员工自杀频频拷问.. · 三层交换技术专题 |
|||
|
||||
| · SQL Server 2008/2005.. · SOA 面向服务架构 · SQL Server 2008/2005.. · iSCSI应用与发展 · RAID——磁盘阵列基础 · Apache技术专题 · 三层交换技术专题 · SQL Server入门到精通 |
· Apache技术专题 · 国际文档格式标准开战 · 路由器设置与口令恢复 · 打造安全服务器 · PHP开发应用手册 · SOA 面向服务架构 · 企业数据恢复指南 · ADSL应用面面俱到 |
|||
|
||||
| · iSCSI应用与发展 · SQL Server入门到精通 · SQL Server 2008/2005.. · SOA 面向服务架构 · Apache技术专题 · iSCSI应用与发展 · 三层交换技术专题 · Apache技术专题 |
· 企业数据恢复指南 · RAID——磁盘阵列基础 · 路由器设置与口令恢复 · SOA 面向服务架构 · ADSL应用面面俱到 · ADSL应用面面俱到 · 反垃圾邮件技术应用 · 访问控制列表(ACL)介绍 |
|||