代码改变世界

初学 Lambda 表达式

2010-07-25 14:46    阅读(209)  评论(0编辑  收藏  举报

Lambda 表达式是个神奇的东东,惭愧自己用了这么久 C# 其实还只是个初学者,对 Lambda 认识很模糊。

网络上的有些例子,不过绝大部分都是转载自同一篇,而且有些还是个有问题的例子,无法编译通过,所以我重新改写了一下,记录一下编译通过的版本,算是我迈出学习 Lambda 的第一步。

例子一、查找数组中的元素:

List<string> list = new List<string>();
list.Add("abc");
list.Add("xyz");
list.Add("1,2");

string str = list.FindAll(s => s.IndexOf(',') > -1)[0]; //这里返回的是数组,而不是其中元素
Response.Write(str);

例子二、查找数组中的元素:

string[] digits = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" };
var shortDigits = digits.Where((digit, index) => digit.Length < index); //基本例子一
foreach (var shortDigit in shortDigits) {
    Response.Write(" " + shortDigit);
}

例子三、定义代理:

delegate int DemoDelegate(int i);

private void Demo()
{
    DemoDelegate myDel = x => x * x; //直接定义委托的实际执行方式,并自动返回了结果
    Response.Write( myDel(5) );
}

例子四、定义代理:

delegate void DemoDelegate(string s);

private void VoidDemo()
{

    // 同上面差不多,只是没有返回值。
    DemoDelegate myDel = n => { string s = n + " " + "World"; Response.Write(s); };
    myDel("Hello");
}