C# lambda表达式及初始化器
using System;using System.Collections.Generic;
using System.Linq;
namespace ConsoleApplication1d
{
class CTX
{
public int id = ;
public string name = "rich";
public int age = ;
public CTX(int id)
{
this.id = id;
}
}
class Test
{
delegate List<int> EvenCheck(List<int> lst);
public static void Main()
{
List<int> lst = new List<int>() { , , , , , , , , }; //List初始化器
Dictionary<int, CTX> dict = new Dictionary<int, CTX>()//Dictionary初始化器
{
{, new CTX() {name = "Tom" } },//对象的初始化器
{
,
new CTX() {age = , id = , name = "unknown" } //对象的初始化器
}
}; //Func<T> 系统定义的委托,参数数目可变, 至少二个参数,最后一个为返回值类型,其余为输入参数类型
Func<int, int> fdg = p => p + ;
Console.WriteLine(fdg());//
Func<int, int, string> fadg = (p, q) => (p + q).ToString();
Console.WriteLine(fadg(-, -));//-30 EvenCheck eck = p => //委托中的lambda,相当于一个匿名函数,参数为p, 返回值为list<int>,符合EvenCheck的委托类型,因此可直接赋值
{
List<int> tlst = new List<int>();
foreach(var e in p)
{
if (e % == )
tlst.Add(e);
} return tlst;
}; List<int> lst2 = lst.Where(p => p % == ).ToList(); //条件表达式中的lambda,Where参数为Func<int, int>,因此可用lambda
List<int> lst3 = eck(lst);
int lx = lst3.SingleOrDefault(p => p == ); //条件表达式中的lambda lst3 = lst3.OrderBy(p => p).ToList(); //升序,OrderBy参数为Func<int, int>,因此可用lambda
lst3 = lst3.OrderByDescending(p => p).ToList();//降序,OrderByDescending参数为Func<int, int>,因此可用lambda
lst3.Sort();//升序 foreach(var l in lst3)
{
Console.Write(l +" ");
}
Console.WriteLine();
}
}
}
C# lambda表达式及初始化器的更多相关文章
- 全新升级的AOP框架Dora.Interception[4]: 基于Lambda表达式的拦截器注册方式
如果拦截器应用的目标类型是由自己定义的,Dora.Interception(github地址,觉得不错不妨给一颗星)可以在其类型或成员上标注InterceptorAttribute特性来应用对应的拦截 ...
- 【C++】C++中的lambda表达式和函数对象
目录结构: contents structure [-] lambda表达式 lambda c++14新特性 lambda捕捉表达式 泛型lambda表达式 函数对象 函数适配器 绑定器(binder ...
- Java 8中Lambda表达式默认方法的模板方法模式,你够了解么?
为了以更简单的术语描述模板方法,考虑这个场景:假设在一个工作流系统中,为了完成任务,有4个任务必须以给定的执行顺序执行.在这4个任务中,不同工作流系统的实现可以根据自身情况自定义任务的执行内容. 模板 ...
- C#高级知识点概要(3) - 特性、自动属性、对象集合初始化器、扩展方法、Lambda表达式和Linq查询
1.特性(Attributes) 特性(Attributes),MSDN的定义是:公共语言运行时允许你添加类似关键字的描述声明,叫做attributes, 它对程序中的元素进行标注,如类型.字段.方法 ...
- .NET中那些所谓的新语法之一:自动属性、隐式类型、命名参数与自动初始化器
开篇:在日常的.NET开发学习中,我们往往会接触到一些较新的语法,它们相对以前的老语法相比,做了很多的改进,简化了很多繁杂的代码格式,也大大减少了我们这些菜鸟码农的代码量.但是,在开心欢乐之余,我们也 ...
- .NET中那些所谓的新语法之三:系统预定义委托与Lambda表达式
开篇:在上一篇中,我们了解了匿名类.匿名方法与扩展方法等所谓的新语法,这一篇我们继续征程,看看系统预定义委托(Action/Func/Predicate)和超爱的Lambda表达式.为了方便码农们,. ...
- Java8初体验(一)lambda表达式语法
感谢同事[天锦]的投稿.投稿请联系 tengfei@ifeve.com 本文主要记录自己学习Java8的历程,方便大家一起探讨和自己的备忘.因为本人也是刚刚开始学习Java8,所以文中肯定有错误和理解 ...
- 16.C#初见Lambda表达式及表达式树(九章9.1-9.3)
在说明Lambda相关知识前,我们需要了解Lambda表达式常用于LINQ,那么我们来聊下LINQ. LINQ的基本功能就是创建操作管道,以及这些操作需要的任何状态.这些操作表示了各种关于数据的逻辑: ...
- Linq之隐式类型、自动属性、初始化器、匿名类
目录 写在前面 系列文章 隐式类型 自动属性 初始化器 匿名类 总结 写在前面 上篇文章是本系列的小插曲,也是在项目中遇到,觉得有必要总结一下,就顺手写在了博客中,也希望能帮到一些朋友.本文将继续介绍 ...
随机推荐
- 自学 iOS – 三十天三十个 Swift 项目
自学 iOS – 三十天三十个 Swift 项目 github源码地址:https://github.com/allenwong/30DaysofSwift
- MySQL初步笔记,有待整理
查询表纪录: select * from tb1; 插入一条记录 insert tb1 values(value1,value2,...); 修改表的默认编码: alter table tb1 ch ...
- 【转】JAVA CAS原理深度分析
java.util.concurrent包完全建立在CAS之上的,没有CAS就不会有此包.可见CAS的重要性. CAS CAS:Compare and Swap, 翻译成比较并交换. java.uti ...
- 【log4net】配置
第一步在 AssemblyInfo 添加如下代码 第二步:在web.config添加如下代码: <log4net> <root> <level value=" ...
- 实验:sigsuspend(),sigprocmask()
实验:sigsuspend(),sigprocmask() 源代码: /* * Program: pause_suspend.c * To test the difference between si ...
- AngularJS模块加载
配置块 在模块的加载阶段,AngularJS会在提供者注册和配置的过程中对模块进行配置.在整个AngularJS的工作流中,这个阶段是唯一能够在应用启动前进行修改的部分. angular.module ...
- Storm calculate pv
本题其实就是storm的wordcout,需要把一个gz压缩的文件读取,并使用storm计算其pv. 样本 数据: 存储为accesslog.gz 我把它加载到我的虚拟机中/mnt/下. 没有使用tr ...
- uva 1471 defence lines——yhx
After the last war devastated your country, you - as the king of the land of Ardenia - decided it wa ...
- 【C#】3.算法温故而知新 - 快速排序
快速排序相比冒泡排序,每次交换是跳跃式的.每次排序的时候设置一个基准点,将小于等于基准点的数全部放到基准点的左边,将大于等于基准点的数放到基准点的右边.这样每次交换的时候就不会像冒泡排序一样只能在相邻 ...
- 倍增法-lca codevs 1036 商务旅行
codevs 1036 商务旅行 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 某首都城市的商人要经常到各城镇去做生意 ...