简单介绍C# 匿名方法

开发 后端
这里介绍任何在C# 匿名方法里声明的变量的范围都不会超出匿名方法的代码块。但是,C# 匿名方法确实具有访问它们代码块之外的变量的能力,只要这些变量在匿名方法所使用的范围里。

在C# 1.1里,声明和使用委托要求你有委托和一个在委托被触发时具有匹配签名的能够执行的方法,以及一个将命名方法与委托关联的分配语句。作为C# 2.0的新特性,匿名方法基本上能够提供与先前命名方法相同的功能,但是它已经不再需要一个在关联到委托之前就明确创建的方法了。

你可以把C# 匿名方法想象为一个实现与委托进行关联这项功能的便捷途径。如果同时看一下匿名方法实现和命名方法实现所取得IL结果,你会发现这两者之间的差别非常小。当编译器碰到匿名方法的时候,它会在类里面创建一个命名方法,并将它与委托进行关联。所以匿名方法在运行期间与命名方法的性能非常类似——性能的增加体现在开发人员的生产效率上,而不是运行期间的执行上。

变量范围

任何在C# 匿名方法里声明的变量的范围都不会超出匿名方法的代码块。但是,C# 匿名方法确实具有访问它们代码块之外的变量的能力,只要这些变量在匿名方法所使用的范围里。这些变量被微软称为外部变量。下面显示了匿名方法如何引用外部变量:

  1. #regionVariablescopeexample-Example2  
  2. privatedelegatevoidExample2();  
  3.  
  4. privatevoidbtnExample2_Click(objectsender,EventArgse)  
  5. {  
  6. //Setupourparameters.  
  7. stringfirstName="Zach";  
  8. stringlastName="Smith";  
  9.  
  10. //CreateaninstanceoftheExample2delegatewithan  
  11. //anonymousmethod.  
  12. Example2example=  
  13. newExample2(  
  14. delegate(){  
  15. MessageBox.Show(firstName+""+lastName);  
  16. });  
  17.  
  18. //Executethedelegate.  
  19. example();  

【编辑推荐】

  1. 浅谈C#开发WinForm
  2. C#静态构造函数简介
  3. C#实现ControlTemplate方法
  4. C#验证输入方法详解
  5. 浅析C#透明窗体
责任编辑:佚名 来源: 博客园
相关推荐

2009-08-27 10:19:22

C#匿名类型

2009-08-14 17:27:56

C#方法参数

2009-08-20 16:28:45

C#匿名方法

2009-08-20 16:15:19

C# 匿名方法

2009-08-27 17:51:34

C#匿名方法

2009-08-21 18:01:32

C#匿名方法

2009-08-27 17:47:18

C#匿名方法作为参数传

2009-08-03 17:51:43

C#引用类型

2009-08-14 16:46:44

C#元数据

2009-08-13 17:36:54

编译C#代码

2009-09-03 09:40:57

C#创建表单

2009-09-01 16:19:57

C# new()约束

2009-08-25 13:38:35

C# Timer组件

2009-08-06 18:15:13

C# SQL Serv

2009-08-07 17:12:07

C# DLL函数

2009-08-10 16:19:37

C#冒泡排序

2009-08-21 17:55:52

C#复合控件

2009-08-07 17:41:40

C#预处理

2009-08-06 14:53:41

C# User类

2009-08-18 17:37:57

C#固定指针
点赞
收藏

51CTO技术栈公众号