- C# 3.0 - var 隐式类型声明
- C# 3.0 -自动属性实现
- C# 3.0 -对象初始化设置
- C# 3.0 -集合初始化设置
- C# 3.0 -匿名类型
- C# 3.0 -扩展方法
- C# 3.0 - partial 分部(类型)
- C# 3.0 - Lambda
- C# 3.0 - { get; set; } 默认值
- C# 3.0 - { get; set; } 默认值 2
- C# 3.0 - yield
注意是 lambda,而不是 lamda。
Lambda 最显著的标志是有个“=>”:Lambda 表达式可以看作一个函数;“=>”左边是参数,没有参数或多个参数时,使用小括号括起来;右边是函数体,必要时使用大括号括起来。
int[] arr = new int[] { 1, 2, 3, 4 };
Response.Write(arr.Count(n => n > 2)); // 2
arr.Count 有两个重载函数,其中第二个就是一个 Func,我们就是用了第二个重载函数。
上面的式子表示:数组中符合 n > 2 的项目有多少个。1、2、3、4 中,只有 3 和 4 符合大于 2 的条件,所以结果为 2。
再看一个例子:
public partial class _Default : System.Web.UI.Page
{
delegate int Foo(int m); // 委托,台湾译为委派。
protected void Page_Load(object sender, EventArgs e)
{
Foo foo = n => n * n;
Foo foo2 = n => n * n * n;
Response.Write(foo(5).ToString()); // 25
Response.Write("<br>");
Response.Write(foo2(5).ToString()); // 125
}
}
如果不返回值,还可以再简单点,比如:
应用示例:霸道的 Lambda 事件处理程序表达式
- C# 3.0 - var 隐式类型声明
- C# 3.0 -自动属性实现
- C# 3.0 -对象初始化设置
- C# 3.0 -集合初始化设置
- C# 3.0 -匿名类型
- C# 3.0 -扩展方法
- C# 3.0 - partial 分部(类型)
- C# 3.0 - Lambda
- C# 3.0 - { get; set; } 默认值
- C# 3.0 - { get; set; } 默认值 2
- C# 3.0 - yield