2 ookop1 ookop1 于 2016.01.19 19:11 提问

一个关于C#的lambda表达式传递的问题

C#中如何让lambda表达式返回另一个lambda表达式?lambda表达式可以传递么?

2个回答

caozhy
caozhy   Ds   Rxr 2016.01.19 19:17
 可以啊。lambda本身也是一个类型,所以也可以返回:
Func<int, bool> MyAnd(Func<int, bool> f1, Func<int, bool> f2)
{
    return x => f1(x) && f2(x);     
}
调用
Func<int, bool> f1 = x => x < 10;
Func<int, bool> f2 = x => x % 2 == 0;
int[] data = { 1, 2, 3, 4, 5, 8, 9, 11, 12, 14 };
var query = data.Where(MyAnd(f1, f2)); // 输出 2 4 8
enpterexpress
enpterexpress   Rxr 2016.01.19 21:27
             int[] arr = { 1, 2, 3, 4, 5, 8, 9, 11, 12, 14 };
            Func<int, bool> f1 = x => x < 10;
            Func<int, bool> f2 = x => x % 2 == 0;
            Func<int, bool> myand = x => f1(x) && f2(x);
            for (int i = 0; i < arr.Length; i++)
            {
                Console.WriteLine(arr[i]+" "+ myand(i));
            }
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
将Lambda表达式作为参数传递并解析——在构造函数参数列表中使用Lambda表达式(C#)
话不多说,先上代码: public class DemoClass { /// <summary> /// 通过Lambda表达式,在构造函数中赋初始值 /// </summary> /// <param name="propertyFunc"></param> /// <param name="propertyValue"></param> pub
Lambda表达式中的引用传递
Lambda表达式中的引用传递Lambda表达式中是不予许使用out和Ref的,但是我们可以使用lambda表达式的一些特性来达到同样的效果 static void Main(string[] args) { var testObject = new A() { Name = "A" }; RefObjectTestMethod(testObject, ()=>
C#利用lambda表达式将函数作为参数或属性跨类传递
在编码时,由于开始是在winform下进行简单的测试开发的,后来代码多了,就想分到不同的类里边去,可是因为原来的测试是在同一个form下的,所以对于函数调用可以很方便,而一旦跨类之后,就会发现,这函数的耦合度太高,以至于不知道该怎么样解耦到类里边去。这时,不妨使用委托类型的Func和Action来实现。 下面是最开始测试时在winform里写的简单代码 using System; using
C# Lambda表达式
自C#3.0开始,就可以使用一种新语法把实现代码赋予委托:Lambda表达式。只要有委托参数类型的地方,就可以使用Lambda表达式。 Lambda表达式的语法比匿名方法简单。如果所调用的方法有参数,且不需要参数,匿名方法的语法就比较简单,因为这样不需要提供参数。 直接上一些例子,读者可以自行运行调试。 static void Main(string[] args)
lambda表达式作为方法参数
一、作为方法参数传递lambda表达式或lambda块 1、是一种常见用途,将lambda表达式或者lambda块作为参数传递给方法。 2、前提:方法的参数是一个函数式接口引用。 3、将lambda表达式作为参数传递给方法,是很方便的技巧,尤其是该lambda表达式只用一次。 4、将lambda块作为参数传递给方法,程序会比较笨拙,所以先实现lambda块,再传递函数式接口引用给方法。
C#中的Action<T>、Func<T>委托和Lambda表达式
使用Action、Func和Lambda表达式 在.NET在,我们经常使用委托,委托的作用不必多说,在.NET 2.0之前,我们在使用委托之前,得自定义一个委托类型,再使用这个自定义的委托类型定义一个委托字段或变量。.NET 2.0给我们带来了Action、Func两个泛型委托,.NET3.0给我们带来了Lambda,这一切使得委托的定义和使用变得简单起来。下面的例子中的委托都使用了Lamb
c++ 将lambda表达式作为参数传递
c++ 将lambda表达式作为参数传递 1、获取变量类型 #include int a = 1; typeid(a).name(); 2、lambda表达式用法 C++11 提供了对匿名函数的支持,称为 Lambda 函数(也叫 Lambda 表达式)。Lambda 表达式把函数看作对象。Lambda 表达式可以像对象一样使用,比如可以将它们赋给变量和作为参数传递,还可以像函数一样
Lambda表达式的传参
Lambda表达式的传参 一直都是老实的用Lambda表达式,比如函数中以std::function func为参数,可以: 声明:void Test(int d,std::function func ); 调用:Test(d,[](int d)->int{…..;return 0;}); 在实际工程里调用:func(30); 也知道可以通过ref实现引用传参,但是其实是一直没有想清楚这
《C#高级编程》【第八章】委托、lambda表达式和事件 -- 学习笔记
委托是一个神奇的东西。委托的出现,使得方法可以作为参数进行传递。其中我们接触最多的应该就是通用库类。通用库类,正是由于这种机制才实现了其的通用性。 一、普通委托         委托类由关键字delegate来声明。我们先看看,定义一个委托类的语法:
lambda表达式和利用lambda排序
这篇博文着重介绍lambda表达式 一个lambda表达式表示一个可调用的代码单元,可以被理解一个未命名的内联函数。 一个lambda表达式的形式 [捕获列表] (参数列表) -> return 返回类型{ 函数体 }参数列表和返回类型可忽略 例auto f=[]{return 42;}; cout<<f()<<endl;//打印42lambda传参实例stable_sort(words.b