博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c#Lamdba表达式与托付
阅读量:7041 次
发布时间:2019-06-28

本文共 2301 字,大约阅读时间需要 7 分钟。

介绍:

     “Lambda表达式”(lambda expression)是一个匿名函数,C#3.0中引入了lambda表达式,它是对匿名函数的一种简化,能够包括表达式和语句,而且可用于创建托付或表达式文件夹树类型。

 

怎样创建

格式:( 形參列表 ) => { 函数体 }

 

 

若要创建 Lambda表达式,须要在 Lambda运算符=>左側指定输入參数(假设有),然后在还有一側输入表达式或语句块。比如,lambda表达式 x => x * x指定名为 x的參数并返回 x的平方值。如以下的演示样例所看到的,你能够将此表达式分配给托付类型:

delegate int del(int i);static void Main(string[] args){    del myDelegate = x => x *x;    int j = myDelegate(5); //j = 25}

注意:函数体多于一条语句的可用大括号括起。

以上函数体也能够写成

del myDelegate = x => { return x * x;};

使用 Lambda表达式

=> 运算符具有与赋值运算符 (=) 同样的优先级而且是右结合运算

仅当 lambda 仅仅有一个输入參数时,括号才是可选的;否则括号是必需的。括号内的两个或很多其它输入參数使用逗号加以分隔:

(x,y) => x == y 

使用Lamdba语句

语句 lambda 与表达式 lambda 表达式类似,仅仅是语句括在大括号里:

delegatevoid TestDelegate(string s);…TestDelegatemyDel = n => { string s = n + " " + "World";Console.WriteLine(s); }; myDel("Hello");

代码中怎样利用Lamdba

 

Lambda 在基于方法的 LINQ 查询中用作标准查询运算符方法(如Where)的參数。參数是托付类型System.Func<T, TResult>。 使用 Lambda 表达式创建该托付最为方便 

看实例

public delegate TResult Func
(TArg0 arg0)

能够将托付实例化为 Func<int,bool> myFunc,当中 int是输入參数,bool 是返回值。 返回值始终在最后一个类型參数中指定。 Func<int, string, bool>定义包括两个输入參数(int 和 string)且返回类型为 bool 的托付。 当调用以下的 Func 托付时,该托付将返回 true 或 false以指示输入參数是否等于 5:  

Func
myFunc = x => x == 5;boolresult = myFunc(4); // returns false of course

//项目中用到的一个小样例 public CommodityCollection Load(string type)        {             return this.Load(p =>            {                p.AppendItem("Code",type);            });        }

return中的load方法实际上是一个具有泛型的托付,p为继承实现了SqlClauseBuilderUW的方法 

[Serializable]	public abstract class SqlClauseBuilderUW : SqlClauseBuilderIUW	{		protected SqlClauseBuilderUW();		public SqlClauseBuilderUW AppendItem
(string dataField, T data, string op, string template); public SqlClauseBuilderUW AppendItem
(string dataField, T data, string op, string template, bool isExpression); protected override SqlClauseBuilderItemBase CreateBuilderItem(); }

public TCollection Load(Action
whereAction);

namespaceSystem{// 摘要://     封装一个方法,该方法仅仅有一个參数而且不返回值。//// 參数://   obj://     此托付封装的方法的參数。//// 类型參数://   T://     此托付封装的方法的參数类型。public delegate void Action
(T obj);}

小结:

综合应用能够看出Lamdba能够简化查询的方法,而且在Linq的使用中多与泛型托付,枚举的where方法结合使用。是查询方式简化了非常多,可是内部构造却与匿名函数同样的.也是刚刚接触了解,不足之处还请谅解。

你可能感兴趣的文章
使用位操作
查看>>
Babelfish(二分)
查看>>
JS 中如何判断 undefined 和 null
查看>>
ftk学习记录(一个进度条文章)
查看>>
log4j直接输出日志到flume
查看>>
非正确使用浮点数据由项目产生BUG讨论的问题
查看>>
PHP5中的stdClass
查看>>
IntelliJ IDEA Community Edition 14.1.4下使用 Apache-Subversion搭建代码管理环境
查看>>
四种可变交流swap方法
查看>>
Lucene中的 Query对象
查看>>
二分基础
查看>>
物流英语
查看>>
[iOS]iOS8可用的识别用户方式(idfa、UUID、idfv)
查看>>
hdu1507--二分图最大匹配
查看>>
【数据结构与算法】二叉树深度遍历(递归)
查看>>
iOS开发--基于AFNetWorking3.0的图片缓存分析
查看>>
使用jqMobi开发app基础:弹出内容的设计
查看>>
3.Java集合总结系列:Set接口及其实现
查看>>
ExtJs之Element.select函数
查看>>
驱动程序调试方法之printk——自制proc文件(一)
查看>>