当前位置:
首页 > 网站开发 > ASP.net 4.0教程 >
-
asp.net教程之Lambda表达式 匿名方法
Lambda表达式是一种高效的类似于函数式编程的表达式,Lambda简化了开发中需要编写的代码量。Lambda表达式是由.NET 2.0演化过来的,也是LINQ的基础,熟练的掌握Lambda表达式能够快速的上手LINQ应用开发。
public int sum(int a, int b) //创建方法
{
return a + b; //返回值
}
上面这个方法就是一个常规方法,这个方法需要方法修饰符(public)、返回类型(int)方法名称(sum)和参数列表。而匿名方法可以看作是一个委托的扩展,是一个没有命名的方法,示例代码如下所示。
delegate int Sum(int a,int b); //声明匿名方法
protected void Page_Load(object sender, EventArgs e)
{
Sum s = delegate(int a,int b) //使用匿名方法
{
return a + b; //返回值
};
}
上述代码声明了一个匿名方法Sum但是没有实现匿名方法的操作的实现,在声明匿名方法对象时,可以通过参数格式创建一个匿名方法。匿名方法能够通过传递的参数进行一系列操作,示例代码如下所示。
Response.Write(s(5,6).ToString());
上述代码使用了s(5,6)方法进行两个数的加减,匿名方法虽然没有名称,但是同样可以使用“(”“)”号进行方法的使用。
注意:虽然匿名方法没有名称,但是编译器在编译过程中,还是会为该方法定义一个名称,只是在开发过程中这个名称是不被开发人员所看见的。
除此之外,匿名方法还能够使用一个现有的方法作为其方法的委托,示例代码如下所示。
delegate int Sum(int a,int b); //方法委托
public int retSum(int a, int b) //普通方法
{
return a + b;
}
上述代码声明了一个匿名方法,并声明了一个普通的方法,在代码中使用匿名方法代码如下所示。
protected void Page_Load(object sender, EventArgs e)
{
Sum s = retSum; //使用匿名方法
int result = s(10, 10);
}
从上述代码中可以看出,匿名方法是一个没有名称的方法,但是匿名方法可以将方法名作为参数进行传递,如上述代码中变量s就是一个匿名方法,这个匿名方法的方法体被声明为retSum,当编译器进行编译时,匿名方法会使用retSum执行其方法体并进行运算。匿名方法最明显的好处就是可以降低常规方法编写时的工作量,另外一个好处就是可以访问调用者的变量,降低传参数的复杂度。
20.3.1 匿名方法
在了解Lambda表达式之前,需要了解什么是匿名方法,匿名方法简单的说就是没有名字的方法,而通常情况下的方法定义是需要名字的,示例代码如下所示。public int sum(int a, int b) //创建方法
{
return a + b; //返回值
}
上面这个方法就是一个常规方法,这个方法需要方法修饰符(public)、返回类型(int)方法名称(sum)和参数列表。而匿名方法可以看作是一个委托的扩展,是一个没有命名的方法,示例代码如下所示。
delegate int Sum(int a,int b); //声明匿名方法
protected void Page_Load(object sender, EventArgs e)
{
Sum s = delegate(int a,int b) //使用匿名方法
{
return a + b; //返回值
};
}
上述代码声明了一个匿名方法Sum但是没有实现匿名方法的操作的实现,在声明匿名方法对象时,可以通过参数格式创建一个匿名方法。匿名方法能够通过传递的参数进行一系列操作,示例代码如下所示。
Response.Write(s(5,6).ToString());
上述代码使用了s(5,6)方法进行两个数的加减,匿名方法虽然没有名称,但是同样可以使用“(”“)”号进行方法的使用。
注意:虽然匿名方法没有名称,但是编译器在编译过程中,还是会为该方法定义一个名称,只是在开发过程中这个名称是不被开发人员所看见的。
除此之外,匿名方法还能够使用一个现有的方法作为其方法的委托,示例代码如下所示。
delegate int Sum(int a,int b); //方法委托
public int retSum(int a, int b) //普通方法
{
return a + b;
}
上述代码声明了一个匿名方法,并声明了一个普通的方法,在代码中使用匿名方法代码如下所示。
protected void Page_Load(object sender, EventArgs e)
{
Sum s = retSum; //使用匿名方法
int result = s(10, 10);
}
从上述代码中可以看出,匿名方法是一个没有名称的方法,但是匿名方法可以将方法名作为参数进行传递,如上述代码中变量s就是一个匿名方法,这个匿名方法的方法体被声明为retSum,当编译器进行编译时,匿名方法会使用retSum执行其方法体并进行运算。匿名方法最明显的好处就是可以降低常规方法编写时的工作量,另外一个好处就是可以访问调用者的变量,降低传参数的复杂度。
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式