Colorful Life2010

C#3.0中的lambda表达式
Weather:多云 ,东北风 4-5级 ,19~25 ℃

lambda表达式,之前是Python语言中特有的一种语法,以其简便轻巧实用的特点,而备受Pythoner的欢迎,而现在,这种语法结构被引用到了.net中来。具体来看一下其定义及用法。。。

使用C# 2.0 中的匿名方法查找“内部包含abc子串的
所有字符串”:
list.FindAll(
delegate(string s) {
return s.Indexof(“abc”) > 0; }
);
使用C# 3.0 中的Lambda表达式查找“内部包含abc子
串的所有字符串”:
list.FindAll(s=>s.Indexof(“abc”) > 0);

Lambda表达式格式为:
(参数列表)=>表达式或者语句块
可以有多个参数,一个参数,或者无参数。参数类型
可以隐式或者显式。例如:

  •  (x, y) => x * y //多参数,隐式类型=> 表达式
  •  x => x * 10 //单参数, 隐式类型=>表达式
  •  x => { return x * 10; } //单参数,隐式类型=>语句块
  •  (int x) => x * 10 // 单参数,显式类型=>表达式
  •  (int x) => { return x * 10; } // 单参数,显式类型=>语句块
  •  () => Console.WriteLine() //无参数

Lambda表达式格式要点
• Lambda表达式的参数类型可以忽略,因为可以根
据使用的上下文进行推断。
• Lambda表达式的主体(body)可以是表达式,也可
以是语句块。
•Lambda表达式传入的实参将参与类型推断,以及
方法重载辨析。
•Lambda表达式表达式和表达式体可以被转换为表
达式树。
Lambda表达式L可以被转换为委托类型D,需要满
足以下条件:
• L和D拥有相同的参数个数。
• L的参数类型要与D的参数类型相同。注意隐式类
型要参与类型辨析。
• D的返回类型与L相同,无论L是表达式,还是语句
块。

引用自:MSDN WEBCAST之C#3.0锐利体验系列

历史上的今天: [2009/07/02]Ubuntu常用命令与技巧
[2009/07/02]Linux查看系统配置常用命令

[C#3.0中的lambda表达式]的回复

xiao t 于 2007-07-03 13:38:58 发表 | IP:221.201.138.*

哦 原来是这样...

柠檬园主 于 2007-07-03 14:23:29 发表 | IP:59.44.76.*

晕,好像你懂了一样。。。

somebody 于 2007-07-11 20:27:06 发表 | IP:220.234.11.*

小T还不是受你的影响。你懂了。她就懂了撒。

你说是不是嘛。

4#   Sutra 于 2007-07-11 21:45:31 发表 | IP:220.234.11.*

int? a = null;

5#   Sutra 于 2007-07-11 21:46:08 发表 | IP:220.234.11.*

咱俩同一个IP呀。

6#   柠檬园主 于 2007-07-11 22:00:55 发表 | IP:221.201.165.*

哈哈,有点江湖的感觉哈,NB人物是男人背后的女人们~~

你们俩果然住一起了哈。

Post a Comment~