首页 / 软件开发 / C# / C# 3.0入门系列(十二)-Lambda表达式中Lifting
C# 3.0入门系列(十二)-Lambda表达式中Lifting2010-06-13 博客园 Tom SongLambda表达式是由匿名方法演化而来的更加高级的形式。关于匿名方法,请参阅http://msdn.microsoft.com/msdnmag/issues/04/05/C20/。关于Lambda表达式的演化,请参阅http://msdn.microsoft.com/msdnmag/issues/07/06/csharp30/default.aspx?loc=zh。英文原版为http://msdn.microsoft.com/msdnmag/issues/07/06/CSharp30/。1,Lambda表达式中的lifting在c# 2.0中,匿名方法的使用,是这样的。class SomeClass
{
delegate void SomeDelegate();
public void InvokeMethod()
{
SomeDelegate del = delegate()
{
MessageBox.Show("Hello");
};
del();
}
}
在LINQ 的演变及其对 C# 设计的影响 一文中,其断言如果 lambda 表达式首先被引入语言,那么就不会有对匿名方法的需要了。在本系列前面的一些文章中,也曾提到lambda 表达式,但并没有做太深入的引述。本文所要讲的是Lambda表达式中lifting,将开始和大家体会lambda表达式的一些细节。编译下面的小程序,看看输出结果,是不是大吃一惊using System;
using System.Collections.Generic;
using System.Linq;
namespace Tester
{
class Program
{
static void Main(string[] args)
{
List<Func<int>> list = new List<Func<int>>();
for (int i = 0; i < 3; i++)
{
list.Add(() => i);
}
foreach (var item in list)
{
Console.WriteLine(item());
}
}
}
}