C#C# 3.0语言增强学习笔记(二)

      前边复习了”隐式类型局地变量”,”扩展方法”,”对象和集合起初化器”,”匿名方式”知识点。见C#
3.0语言增强学习笔记(一)

此地大家别的复习C# 3.0的别样新特征:Lambda表明式

初识Lambda表达式:

使用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)

 

拉姆da表明式简介

怎么Lambda表明式比匿名形式更好?

C# 2.0的匿有名的模特式允许大家以内联的办法来贯彻委托实例,而C#
3.0的Lambda表明式运维我们应用一种更接近人的沉思,更自然的艺术来落实类似于匿名格局同样的成效。

Lambda表明式格式

(参数列表)=>表达式大概语句块

能够有几个参数,一个参数,恐怕无参数。参数类型可以隐式可能显式。例如:

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

注意:

1.Lambda表明式的参数类型能够总结,因为能够依据使用上下文进行推理。

2.Lambda表明式的主导(body)能够是表达式,也足以是语句块。

3.Lambda表明式传入的实参将参预项目臆想,以及艺术重载辨析。

4.Lambda表达式说明式和表述式体能够被转换来表明式树。

 

拉姆da表达式与寄托项目

Lambda表达式L能够被转换到委托类型D,需求满意以下原则:

1.L和D拥有相同的参数个数

2.L参数类型要与D参数类型相同。注意隐式类型要参加项目辨析。

3.D的回到类型与L相同,无论L是表达式,依然语句块。

 

 

相关文章