c#Lamdba表达式与托付

介绍:

“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, TResult>(TArg0 arg0)

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

Func<int,bool> 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<T>(string dataField, T data, string op, string template);
		public SqlClauseBuilderUW AppendItem<T>(string dataField, T data, string op, string template, bool isExpression);
		protected override SqlClauseBuilderItemBase CreateBuilderItem();
	}
public TCollection Load(Action<WhereSqlClauseBuilder> whereAction);
namespaceSystem
{
// 摘要:
//     封装一个方法,该方法仅仅有一个參数而且不返回值。
//
// 參数:
//   obj:
//     此托付封装的方法的參数。
//
// 类型參数:
//   T:
//     此托付封装的方法的參数类型。
public delegate void Action<in T>(T obj);
}

小结:

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

c#Lamdba表达式与托付

时间: 2024-10-13 04:00:09

c#Lamdba表达式与托付的相关文章

Java8 Lamdba表达式 002

本篇将讲述lamdba表达式的排序,本例包含一个Player对象的集合[稍后定义],通过每个player的分数高低对列表的player进行排序,类定义001如下 public class SortingPlayer { public static void main(String[] args) { List<Player> playerList = new ArrayList<>(); playerList.add(new Player("Black", &q

c#Lamdba表达式与委托

介绍: "Lambda表达式"(lambda expression)是一个匿名函数,在C#3.0中引入了lambda表达式,它是对匿名函数的一种简化,可以包含表达式和语句,并且可用于创建委托或表达式目录树类型. 如何创建 格式:( 形参列表 ) => { 函数体 } 若要创建 Lambda表达式,需要在 Lambda运算符=>左侧指定输入参数(如果有),然后在另一侧输入表达式或语句块.例如,lambda表达式 x => x * x指定名为 x的参数并返回 x的平方值.

Java8 Lamdba表达式 001

在一个已经存在的编程语言里非常少有对现有的生态系统起重大影响的新特性.Lambda表达式对于Java语言就是这样的意义的存在.简单来说,Lambda表达式提供了便利的方式去创建一个匿名的功能.提供了一个简单的方式使用表达式或一系列的状态创建一个简单方法.Lambda表达式是包括一个抽象方法的接口.Lamdba表达式能够用来创建简单的匿名功能来实现对集合元素的排序和过滤,还能分配变量并传递到其它对象中.等等.以下将结合样例来加深大家对Lamdba的理解. 首先讲一下安装配置 要想使用Lamdba,

Java8 Lamdba表达式 003

继续lamdba.上篇Java8 Lamdba表达式 002讲了使用lamdba对集合元素进行排序,本篇讲述使用lamdba对集合元素过滤,演示样例代码沿用上篇: 001 public class SortingPlayer { public static void main(String[] args) { List<Player> playerList = new ArrayList<>(); playerList.add(new Player("Black"

C#高级编程9-委托、lamdba表达式和事件

委托.lamdba表达式和事件 1.引用方法 2.委托 声明委托 使用委托 系统委托 BubbleSorter 多播委托 匿名方法 3.lamdba表达式 参数 多行代码 闭包 foreach闭包 4.事件 事件发布程序 事件侦听器 弱事件 @author duanlaibao @help C# Advanced programming.Nine @date 13:31:36

lamdba表达式

1 #include <iostream> 2 #include <string> 3 #include <vector> 4 #include <algorithm> 5 using namespace std; 6 14 int main(int argc, const char *argv[]) 15 { 16 vector<int> vec; 17 18 vec.push_back(99); 19 vec.push_back(87); 2

C# Lambda表达式

Lambda表达式 "Lambda表达式"是一个匿名函数,是一种高效的类似于函数式编程的表达式,Lambda简化了开发中需要编写的代码量.它可以包含表达式和语 句,并且可用于创建委托或表达式目录树类型,支持带有可绑定到委托或表达式树的输入参数的内联表达式.所有Lambda表达式都使用Lambda运算 符=>,该运算符读作"goes to".Lambda运算符的左边是输入参数(如果有),右边是表达式或语句块.Lambda表达式x => x * x读作&qu

Java 8 Lambda表达式

Java 8中Lambda表达式就是一个函数接口,也就是只有一个抽象方法的接口. Java中,传递一个行为是通过传递一个代表某种行为的对象来实现,比如,需要给某个按钮注册一个事件监听: button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { System.out.println("button clicked"); } }); 通过匿名内

python学习笔记-Day04-第二部分(lambda表达式)

lamdba表达式 注意: 1. 用于处理简单逻辑 lamdba表达式只是一个表达式,而不是一个代码块,仅能封装有限的逻辑,对于逻辑复杂的代码 还是推荐使用def 定义函数 来处理 2. 自动return lamdba表达式中无需使用return语句, 会自动返回结果, 例: def func(arg):    arg+1上下两段代码功能相同func = lambda arg : arg +1 对于多个参数的lamdba表达式,示例如下:func = lambda a,b: a+b func =