internal delegate int MyDel(int x); public class Lambda { private MyDel del = delegate(int x) { return x + 1; };//匿名方法 private MyDel del2 = (int x) => { return x + 1; };//Lambda表達式 private MyDel del3 = (x) => { return x + 1; };//Lambda表達式 private MyDel del4 = x => x + 1; //Lambda表達式 }
Lambda表達式(Lambda Expressions)2009-03-06 16:33Lambda 表達式(拉姆達表達式) 和 匿名方法 其實是一件事情。唯一的不同是:他們語法表現形式不同。Lambda 表達式是在語法方面的更進一步的進化。在本質上,他們是一件事情。他們的作用都是:產生方法。即:內聯方法。
引用自 C#首席架構師Anders Hejlsberg 的原話:
www.ondotnet.com/...page=2
lambda expressions and anonymous methods are really just two words for the same thing. The only thing that differs is, "What does the syntax look like?" And the lambda expressions are a further evolution of the syntax.But underneath, they do the same thing. They generate methods. You know, they're in-line methods.
所以:我們要了解 Lambda 表達式 就應該同時也了解 匿名方法。下面先看一個簡單的代碼例子,分別用匿名方法和Lambda 表達式來實現對數組的搜索:
使用 .net 2.0 的匿名方法來搜索字符串數組中包含 a 的字符串數組
static void Main(string[] args)
{
string[] list = new string[] { "abc", "12", "java" };
string[] ll = Array.FindAll(list,
delegate(string s)
{
return s.IndexOf("a") >= 0;
}
);
foreach (string var in ll)
{
Console.WriteLine(var);
}
Console.ReadLine();
}
使用 .net 3.5 的Lambda表達式來搜索字符串數組中包含 a 的字符串數組
static void Main(string[] args)
{
string[] list = new string[] { "abc", "12", "java" };
string[] ll = Array.FindAll(list, s => (s.IndexOf("a") >= 0));
foreach (string var in ll)......余下全文>>
簡單點說就是一個匿名委托
參見 msdn
msdn.microsoft.com/zh-cn/library/bb397687.aspx
參考資料:msdn.microsoft.com/zh-cn/library/bb397687.aspx