Lambda表达式只是用更简单的方式来写匿名方法,彻底简化了对.NET委托类型的使用。

现在,如果我们要使用泛型 List<> 的 FindAll() 方法,当你从一个集合去提取子集时,可以使用该方法。

// 该方法唯一的参数是一个System.Predicate<T>类型的泛型委托
public List<T> FindAll(Predicate<T> match); // 该委托指向任意以类型参数作为唯一输入参数并返回bool的方法
public delegate bool Predicate<in T>(T obj);

在调用 FindAll() 时,List<T>中每一项都将传入Predicate<T> 对象所指向的方法。方法在实现时将执行一些计算,来判断传入的数据是否符合标准,并返回 true / false,如果返回 true ,该项被添加到表示自己的List<T>集合中。

现在,我们需要从一个List<int>集合中找到所有偶数,该如何实现呢?

1.传统方法

public class MyDelegateSyntax
{public static void Show()
{
Console.WriteLine("fun with lambdas"); List<int> list = new List<int> { , , , , , }; Predicate<int> callback = new Predicate<int>(IsEvenNumber); // 传统方法
List<int> evenList = list.FindAll(callback); Console.WriteLine(); foreach (int item in evenList)
{
Console.WriteLine(item);
}
} private static bool IsEvenNumber(int obj) => obj % == ;
}

2.匿名方法

public class MyDelegateSyntax
{
  public static void Show()
{
Console.WriteLine("fun with lambdas"); List<int> list = new List<int> { , , , , , }; // 匿名方法
List<int> evenList = list.FindAll(delegate (int i)
{
return i % == ;
}); Console.WriteLine(); foreach (int item in evenList)
{
Console.WriteLine(item);
}
}
}

3.Lambda表达式

public class MyDelegateSyntax
{
public static void Show()
{
Console.WriteLine("fun with lambdas"); List<int> list = new List<int> { , , , , , }; // Lambda表达式
// 隐式,编辑器会更具上下文表达式推断i的类型
List<int> evenList = list.FindAll(i => i % == ); // 显式
// 描述:我的参数列表(一个整形i)将会被表达式(i%2)==0处理
List<int> evenList1 = list.FindAll((int i) => i % == ); // 我的参数列表(一个整形i)将会被表达式(i%2)==0处理 Console.WriteLine(); foreach (int item in evenList)
{
Console.WriteLine(item);
}
}
}

 4.使用多个语句处理参数(“{}”)

public class MyDelegateSyntax
{
public static void Show()
{
Console.WriteLine("fun with lambdas"); List<int> list = new List<int> { , , , , , }; // 多个处理语句 语句块 {}
List<int> evenList = list.FindAll(i =>
{
Console.WriteLine(i);
return i % ==
;
});
Console.WriteLine(); foreach (int item in evenList)
{
Console.WriteLine(item);
}
}
}

5.含有多个(或零个)参数的Lambda表达式

public class MyDelegateSyntax
{
public delegate string VerySimpleDelegate(); public delegate void MathMessage(string msg, int result); public static void Show()
{
Console.WriteLine("fun with lambdas");
// 多个参数的Lambda
MathMessage mm = new MathMessage((msg, result) => Console.WriteLine($"msg:{msg} result:{result}"));
mm("adding has cmpleted", + ); // 0个参数Lambda
VerySimpleDelegate d = new VerySimpleDelegate(() => "enjoy you string");
Console.WriteLine(d.Invoke());
}
}

学无止境,望各位看官多多指教。

C#Lambda表达式学习日记的更多相关文章

  1. C# Lambda 表达式学习之(三):动态构建类似于 c => c.Age == null || c.Age > 18 的表达式

    可能你还感兴趣: 1. C# Lambda 表达式学习之(一):得到一个类的字段(Field)或属性(Property)名,强类型得到 2. C# Lambda 表达式学习之(二):LambdaExp ...

  2. C# Lambda 表达式学习之(四):动态构建类似于 c => c.Age == 2 || c.Age == 5 || c => c.Age == 17 等等一个或多个 OrElse 的表达式

    可能你还感兴趣: 1. C# Lambda 表达式学习之(一):得到一个类的字段(Field)或属性(Property)名,强类型得到 2. C# Lambda 表达式学习之(二):LambdaExp ...

  3. java lambda表达式学习笔记

    lambda是函数式编程(FP,functional program),在java8中引入,而C#很早之前就有了.在java中lambda表达式是'->',在C#中是‘=>’. 杜甫说:射 ...

  4. java 8 中lambda表达式学习

    转自 http://blog.csdn.net/renfufei/article/details/24600507 http://www.jdon.com/idea/java/10-example-o ...

  5. C# Lambda表达式学习笔记

    本笔记摘抄自:https://www.cnblogs.com/leslies2/archive/2012/03/22/2389318.html,记录一下学习过程以备后续查用.     一.Lambda ...

  6. Lambda 表达式 学习

    最近几天在学习Lambda,给我的理解就是一个匿名函数的升级版,代码极大可能的简洁了很多,不需要像以前一样必须使用众多的代码才能实现相关功能. 慢慢积累学习,将Java 8的相关知识进行一个学习. 用 ...

  7. Python中lambda表达式学习

    lambda只是一个表达式,函数体比def简单很多. lambda的主体是一个表达式,而不是一个代码块.仅仅能在lambda表达式中封装有限的逻辑进去. lambda表达式是起到一个函数速写的作用.允 ...

  8. C++11 lambda表达式学习

    lambda表达式是函数式编程的基础.咱对于函数式编程也没有足够的理解,因此这里不敢胡言乱语,有兴趣的可以自己查找相关资料看下.这里只是介绍C++11中的lambda表达式自己的认识.这里有参考文档h ...

  9. python第l六天,lambda表达式学习,涉及filter及Map。

    在python中lambda表达式可以作为匿名函数来使用,举一个简单的栗子: 以前我们写两个数相加的函数需要 #以前我们写两个数相加的函数,需要这样写 >>> def sum(x,y ...

随机推荐

  1. [转]将某个Qt4项目升级到Qt5遇到的问题

    原文:http://hi.baidu.com/xchinux/item/9044d8ce986accbb0d0a7b87晚上花了4个小时,将以前的一个项目从Qt 4.8.4-MinGW升级到了Qt5. ...

  2. AndroidUI组件之ActionBar--基于下拉的导航方式

      在上一篇关于ActionBar的博文中.我们知道了ActionBar是Android3.0的重要更新之中的一个.本篇博文就来写一个开发中经经常使用到的样例.用ActionBar提供基于下拉的导航方 ...

  3. FastDFS 的部署、配置与测试的

    部署篇:http://soartju.iteye.com/blog/803477 配置篇:http://soartju.iteye.com/blog/803524 测试篇:http://soartju ...

  4. kvm安装及配置

     yum install kvm libvirt python-virtinst qemu-kvm virt-viewer bridge-utils virt-install 修改网卡信息 /etc/ ...

  5. 服务器端PHP多进程编程

    待更新 版权声明:本文为博主原创文章,未经博主允许不得转载.

  6. java web hello world

    首先在eclipse 里面创建一个java 动态项目, 记住路径,这里是直接通过根目录直接访问的webContent目录下面 的文件, 创建好后 ,在本地配置Tomcat服务器, 将server加入到 ...

  7. Library中的title与Name

    在Library中新增Title字段,其中文件夹的title字段与Name相同,并且默认生成:但是文件的Title字段为空.

  8. Android Studio SDK Manager无法正常下载如何设置

    博客分类: Linux 零散小知识 Android那点事 AndroidStudioSDKManager  一方面在/etc/hosts中设置: #Google主页 203.208.46.146 ww ...

  9. SQL函数大全(字符串函数).

    SQL Server 2005  函数大全 字符串函数 字符串函数 SubString在SQL和C#中不同, 一,select  substring('abcde',-1,3) select LEN( ...

  10. 关于wordpress忘记密码 找回密码的方式

    1.通过直接修改数据库中密码的加密字符(如果wordpress的版本不同,那么此方法是不好实现的) 2.使用找回密码的方式:通过邮箱找回密码 前端登录密码错误后 会显示   错误); 方法二 打开WP ...