C#高级功能(一)Lambda 表达式
Lambda 表达式是一种可用于创建委托或表达式目录树类型的匿名函数。通过使用 lambda 表达式,可以写入可作为参数传递或作为函数调用值返回的本地函数。 Lambda 表达式对于编写 LINQ 查询表达式特别有用。若要创建 Lambda 表达式,需要在 Lambda 运算符 => 左侧指定输入参数(如果有),然后在另一侧输入表达式或语句块。例如,lambda 表达式 x => x * x 指定名为 x 的参数并返回 x 的平方值
using System; namespace NewAttr
{
/// <summary>
/// Lambda 表达式是一种可用于创建委托或表达式目录树类型的匿名函数。
/// Lambda 表达式对于编写 LINQ 查询表达式特别有用。
/// </summary>
public class LambdaDemo
{
public LambdaDemo() { }
/// 委托不能重载,即委托名称相同,参数类型,个数不同。
/// 构造委托的时候,根本不管参数,当然也就不知道你要构造的是哪个委托。
private delegate int del(int x);
private delegate int del2(int x, int s);
private delegate void del3();
public static void Test()
{
del myDel1 = x => x * x;
del myDel2 = (x) => x * x;
del myDel3 = (x) => x * x;
del myDel4 = (int x) => x * x;
del myDel5 = (int x) => { return x * x; };
Console.WriteLine("del myDel1 = x => x * x :{0}", myDel1());
Console.WriteLine("del myDel2 = (x) => x * x :{0}", myDel2());
Console.WriteLine("del myDel3 = (x) => x * x :{0}", myDel3());
Console.WriteLine("del myDel4 = (int x) => x * x :{0}", myDel4());
Console.WriteLine("del muDel5 = (int x) =>{1}:{0}", myDel5(), " { return x * x; } ");
del3 myDel6 = () => Test2();
Console.WriteLine("--------------------------------");
myDel6();
} public static void Test2()
{
del2 myDel2 = (x, y) => x * y;
del2 myDel3 = (int x, int y) => x * y;
del2 myDel4 = (int x, int y) => { return x * y; };
Console.WriteLine("del2 myDel2 = (x, y) => x * y :{0}", myDel2(, ));
Console.WriteLine("del2 myDel3 = (int x, int y) => x * y :{0}", myDel3(, ));
Console.WriteLine("del2 myDel4 = (int x, int y) => {1} :{0}", myDel4(, ), "{ return x * y; }");
Console.WriteLine("--------------------------------");
FunTest();
} public static void FunTest()
{
///其中 Func 是最多具有十六个输入参数的任何一个 Func 委托
///之后一个为返回值。
///Func<TResult>,Func<T,TResult>,Func<T,.....T,TResult>
Func<int> myFunc = () => ;
Console.WriteLine("Func<int> myFunc = () => 1 :{0}", myFunc());
Func<int, string, int> myFunc2 = (x, y) => x + y.Length;
Console.WriteLine("Func<int, string, int> myFunc = (x, y) => x + y.Length :{0}", myFunc2(, "jasonhua")); ///其中 Action 是最多具有十六个输入参数的任何一个 Action 委托
Action myAction = () => { Console.WriteLine("Action myAction :1 * 1"); };
myAction();
Action<int, int> myAction2 = (x, y) => { Console.WriteLine("Action<int, int> myAction2 = (x, y) :{0}", x * y); };
myAction2(,);
}
}
}
其他的基础功能
5. C#中泛型的解释(object,list,var,dynamic的区别)
6. C#中委托
7. C#和.NET版本对比
C#高级功能(一)Lambda 表达式的更多相关文章
- Java 高级特性: Lambda 表达式
本文源代码上传到了码云,请点击 LambdaExpression 获取.Lambda 表达式是 java 8 的新特性,本文讲解了 lambda 表达式的所有知识.内容涉及到 lambda 表达式是什 ...
- 第十二篇 .NET高级技术之lambda表达式
最近由于项目需要,刚刚学完了Action委托和Func<T>委托,发现学完了委托就必须学习lambda表达式,委托和Lambda表达式联合起来,才能充分的体现委托的便利.才能使代码更加简介 ...
- C#3.0新增功能08 Lambda 表达式
连载目录 [已更新最新开发文章,点击查看详细] Lambda 表达式是作为对象处理的代码块(表达式或语句块). 它可作为参数传递给方法,也可通过方法调用返回. Lambda 表达式广泛用于: 将 ...
- Lambda表达式 简介 语法 示例
Lambda 表达式也称为闭包,是匿名类的简短形式.Lambda 表达式简化了[单一抽象方法声明接口]的使用,因此 lambda 表达式也称为功能接口. 在 Java SE 7 中,单一方法接口可使用 ...
- 大数据之路week06--day03(jdk8新特性 Lambda表达式)
为什么使用Lambda表达式?(做为初学者接触这个新的语法,会很懵逼,说道理,我在接触到这一块的时候,语法规则我看到了也很懵逼,因为这个和逻辑的关系不是很大,但就是作为一种新的语法出现,一时间很难接受 ...
- Java 学习笔记(11)——lambda 表达式
在写Java代码的时候,如果某个地方需要一个接口的实现类,一般的做法是新定义一个实现类,并重写接口中的方法,在需要使用的时候new一个实现类对象使用,为了一个简单的接口或者说为了一个回调函数就得额外编 ...
- Kotlin——从无到有系列之高级篇(一):Lambda表达式
如果您对Kotlin很有兴趣,或者很想学好这门语言,可以关注我的掘金,或者进入我的QQ群大家一起学习.进步. 欢迎各位大佬进群共同研究.探索 QQ群号:497071402 进入正题 经过前面一系列对K ...
- 动态创建Lambda表达式实现高级查询
需求简介 最近这几天做的东西总算是回归咱的老本行了,给投资管理项目做一个台账的东西,就是类似我们的报表.其 中有一个功能是一个高级查询的需求,在查询条件方面大概有7.8个查询条件.需求就是如果一个条件 ...
- C#高级知识点概要(3) - 特性、自动属性、对象集合初始化器、扩展方法、Lambda表达式和Linq查询
1.特性(Attributes) 特性(Attributes),MSDN的定义是:公共语言运行时允许你添加类似关键字的描述声明,叫做attributes, 它对程序中的元素进行标注,如类型.字段.方法 ...
随机推荐
- 安装LINUX X86-64的10201出现链接ins_ctx.mk错误
在安装linux X86-64的Oracle10201时,在链接过程中出现了这个错误. 详细错误信息为: Error in invoking target ‘install’ of makefile ...
- OC基础(25)
NSNumber NSValue NSDate NSFileManager *:first-child { margin-top: 0 !important; } body > *:last-c ...
- IIS7.0设置404错误页,返回500状态码
一般在II6下,设置自定义404错误页时,只需要在错误页中选择自定义的页面,做自己的404页面即可.但是在IIS7.0及以上时,设置完404错误页后,会发现状态码返回的是500,并且可能会引起页面乱码 ...
- MPush开源消息推送系统:简洁、安全、支持集群
引言由于之前自己团队需要一个消息推送系统来替换JPUSH,一直找了很久基本没有真正可用的开源系统所有就直接造了个轮子,造轮子的时候就奔着开源做打算的,只是后来创业项目失败一直没时间整理这一套代码,最近 ...
- 慕课网-安卓工程师初养成-4-11 Java循环跳转语句之 break
来源:http://www.imooc.com/code/1431 生活中,我们经常会因为某些原因中断既定的任务安排.如在参加 10000 米长跑时,才跑了 500 米就由于体力不支,需要退出比赛.在 ...
- JS实现联想输入(一)
这里是我们的项目中的一个使用JS实现联想输入的功能代码,在此做个小的记录并且将它分享给大家希望对园中的朋友有用! 我将分享三段都非常简单的代码,仅仅作为个人的一点小小的积累而已! 1:后台的Actio ...
- vps选择
banwagonhost.com digitalocean.com vultr.com 优惠链接 https://www.vultr.com/freetrial
- C/C++中产生随机数
可以使用srand()函数和rand()函数来产生随机数,其中srand()用来初始化随机数种子,rand()用来产生随机数.因为默认情况下随机数种子为1,而相同的随机数种子产生的随机数是一样的,失去 ...
- idea 14 svn安装
安装SVN客户端. 打开IDEA 14 File-setting-Version coltorl-Subversion-General 填入安装路径 打开"VCS"菜单项然后点击& ...
- JUnit + Mockito 单元测试(二)
摘自: http://blog.csdn.net/zhangxin09/article/details/42422643 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 入门 ...