(T x) => y匿名函数(lambda 表达式)
来源:互联网 发布:网络运行商 编辑:程序博客网 时间:2024/06/07 06:07
C# 编程指南
匿名函数(C# 编程指南)
更新:2007 年 11 月
如其他地方所述,委托是一种包装方法调用的类型。就像类型一样,可以在方法之间传递委托实例,并且可以像方法一样调用委托实例。匿名函数是一个“内联”语句或表达式,可在需要委托类型的任何地方使用。可以使用匿名函数来初始化命名委托,或传递命名委托(而不是命名委托类型)作为方法参数。
共有两种匿名函数,以下主题中分别讨论了这些函数:
C# 中委托的发展
在 C# 1.0 中,您通过使用在代码中其他位置定义的方法显式初始化委托来创建委托的实例。C# 2.0 引入了匿名方法的概念,作为一种编写可在委托调用中执行的未命名内联语句块的方式。C# 3.0 引入了 Lambda 表达式,这种表达式与匿名方法的概念类似,但更具表现力并且更简练。这两个功能统称为“匿名函数”。通常,针对 .NET Framework 版本 3.5 及更高版本的应用程序应使用 Lambda 表达式。
下面的示例演示了从 C# 1.0 到 C# 3.0 委托创建过程的发展:
C#
class Test{ delegate void TestDelegate(string s); static void M(string s) { Console.WriteLine(s); } static void Main(string[] args) { // Original delegate syntax required // initialization with a named method. TestDelegate testdelA = new TestDelegate(M); // C# 2.0: A delegate can be initialized with // inline code, called an "anonymous method." This // method takes a string as an input parameter. TestDelegate testDelB = delegate(string s) { Console.WriteLine(s); }; // C# 3.0. A delegate can be initialized with // a lambda expression. The lambda also takes a string // as an input parameter (x). The type of x is inferred by the compiler. TestDelegate testDelC = (x) => { Console.WriteLine(x); }; // Invoke the delegates. testdelA("Hello. My name is M and I write lines."); testDelB("That's nothing. I'm anonymous and "); testDelC("I'm a famous author."); // Keep console window open in debug mode. Console.WriteLine("Press any key to exit."); Console.ReadKey(); } }/* Output: Hello. My name is M and I write lines. That's nothing. I'm anonymous and I'm a famous author. Press any key to exit. */
- (T x) => y匿名函数(lambda 表达式)
- c++0x:Lambda表达式(匿名函数)
- 匿名函数 & Lambda 表达式
- 匿名函数 - lambda表达式
- 匿名函数 lambda表达式
- 匿名函数和lambda表达式
- 委托 匿名函数 ,Lambda表达式
- 4.6 匿名函数:Lambda表达式
- 匿名函数之lambda表达式
- Python 匿名函数 lambda表达式
- 匿名函数(lambda)
- C++11:匿名函数(lambda函数/表达式)及其用法
- 匿名函数(Lambda表达式)与箭头函数
- C++ 11中关于Lambda表达式(匿名函数)
- C++11中的匿名函数指针(Lambda表达式)
- C++中lambda表达式(匿名函数)的用法
- Lambda 函数 (匿名函数)
- 匿名函数、委托、lambda表达式、扩展方法
- 企业知识缘何流失:离职了就别再来找我
- 数据库设计模式
- netstat Send-Q Recv-Q,端口状态说明
- 实战: SOLR的分布式部署(复制模式 CollectionDistribute)部署流程详解 (二)
- 如何在项目部署的时候自动安装多个应用程序安装包(VC++6.0)
- (T x) => y匿名函数(lambda 表达式)
- J2ME文件系统的运用(四) LWUIT文件浏览器
- 使用SQLPLUS生成HTML报表
- was 6.1.07 无法连接出现下面错误
- CloseHandle()函数的使用
- test
- C#.NET 连接各类数据库 字符串的写法
- javascript中的字符串编码转换
- 转载一篇Flex组件生命周期的文章