C#-委托 lambda 匿名方法 匿名类型
1.lambda 匿名方法 匿名类型
delegate void d1();d1 d = delegate(){Console.WriteLine("this is a test");}; //使用匿名方法d1 d += ()=>{Console.WriteLine("this_test2");}; //使用lambda表达式var q1 = new {name= "jing",age=25}; //匿名类型必须和var配合用var q2 = from c in a where c.age <20 select new {c.name,c,age = 21}; //匿名类型必须和var配合用var q3 = a.Where(c => c.age<20).Select(c=>c.name) //lambda表达式必须在linq 的投影语法中,lambda后面可以使用匿名类型,因为前面有var
Event是delegate的抽象和封装,Event提供了安全的方法向delegate对象添加和删除方法
C#定义的三个泛型委托
Func<Tint,Tout> 有参数0-16个,有返回值
Predicate<T> 有参数1个,有bool返回值
Action<T> 有参数0-16个,无返回值
static void Main(string[] args){var arr = new List<int>() { -1, -2, -3, 0, 1, 2, 3, 4, 5, 6 };var d1 = new Predicate<int>(More);var d2 = new Predicate<int>(Less);var a1 = new Func<int,string>(Speak);string aa = a1(1123);Console.WriteLine(aa);Print(arr, d1);Print(arr, d2);Console.WriteLine("已经全部打印完了,请指示下一步操作");Console.ReadKey();}static string Speak(int i){return (i ).ToString();}static void Print(List<int> aa, Predicate<int> dl){foreach (var item in aa){if (dl(item)){Console.WriteLine(item);}}}static bool More(int i){if (i > 0){return true;}return false;}static bool Less(int i){if (i < 0){return true;}return false;}}
委托的一个实例
delegate void Speak(int i ); // 声明一个委托- spike jy = new spike(); // 声明一个对象
jy.lower += speak; // 给委托附加方法jy.lower += delegate { Console.WriteLine("this is very crazy man!"); }; // 给委托添加匿名方法jy.lower += (int i )=> Console.WriteLine("sadjfoisajfdoijsadofjodsaj");//匿名方法lambda表达式方式写法jy.to(10);
我记得委托 +=的时候会覆盖前一个方法的,为什么在执行的时候没有覆盖前一个方法?
我好像记得有一个地方是这样的,但是委托确实是多赋方法,一次运行多个方法的
C#-委托 lambda 匿名方法 匿名类型的更多相关文章
- 无法将 匿名方法 转换为类型“System.Delegate”,因为它不是委托类型:解决方法
http://blog.csdn.net/xiaochongchong1248/archive/2009/11/20/4841193.aspx?1271573283 编程环境要求:VS2008/FX2 ...
- 关于委托:异常{ 无法将 匿名方法 转换为类型“System.Delegate”,因为它不是委托类型 }
转自:http://www.cnblogs.com/xiaofei59/archive/2010/11/25/1887285.html 异常{ 无法将 匿名方法 转换为类型“System.Delega ...
- 关于委托:异常{ 无法将 匿名方法 转换为类型“System.Delegate”,因为它不是委托类型 }
异常{ 无法将 匿名方法 转换为类型"System.Delegate",因为它不是委托类型 } 委托实际上是把方法名作为参数,但是若有好多个方法时,就要指明是哪个参数 查看如下代 ...
- Delegate,Action,Func,匿名方法,匿名委托,事件 (转载)
Delegate,Action,Func,匿名方法,匿名委托,事件 (转载) 一.委托Delegate 一般的方法(Method)中,我们的参数总是string,int,DateTime...这些基本 ...
- Delegate,Action,Func,匿名方法,匿名委托,事件
一.委托Delegate 一般的方法(Method)中,我们的参数总是string,int,DateTime...这些基本的数据类型(或者没有参数),比如 public void HelloWorld ...
- 温故而知新:Delegate,Action,Func,匿名方法,匿名委托,事件
Tks: http://www.cnblogs.com/yjmyzz/archive/2009/11/23/1608818.html 20150801 add: http://www.cnblogs. ...
- C# 从CIL代码了解委托,匿名方法,Lambda 表达式和闭包本质
前言 C# 3.0 引入了 Lambda 表达式,程序员们很快就开始习惯并爱上这种简洁并极具表达力的函数式编程特性. 本着知其然,还要知其所以然的学习态度,笔者不禁想到了几个问题. (1)匿名函数(匿 ...
- .net学习之新语法学习(匿名类和匿名方法,扩展方法,系统内置委托,Lambda表达式和linq等)
1.自动属性 Auto-Implemented Properties 2.隐式类型 var var变量不能作为全局变量使用,因为不能在编译时确定类型 3.参数默认值 和 命名参数 4.对象初始化器 ...
- 委托,匿名方法,Lambda,泛型委托,表达式树
一.委托:完成一个委托应分三个步骤://step01:首先用delegate定义一个委托;public delegate int CalculatorAdd(int x, int y);//step0 ...
随机推荐
- C# 低耦合 高内聚
低耦合 loosely Coupling 松散的耦合关系=炮友 couple=夫妻 夫妻=法律约束.家庭.生活.财产.繁衍 炮友:吃喝玩乐,不会产生感情方面的依赖 内聚性 内聚性又称块内联 ...
- VMWare虚拟机下为Ubuntu 12.04.1网络设置(NAT方式)
NAT方式: 虚拟机能够上外网,能够訪问宿主计算机所在网络的其它计算机(反之不行). 第一步:设置虚拟机vmware网络參数 (1)打开虚拟机,选择菜单"编辑">" ...
- POJ 1236--Network of Schools【scc缩点构图 && 求scc入度为0的个数 && 求最少加几条边使图变成强联通】
Network of Schools Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 13325 Accepted: 53 ...
- Gretna2.0 使用过程中遇到的问题
在做Normalize的时候,报错"Cannot find T1 image (e.g. *.dcm in T1 Directory), Please Check again!", ...
- asp.net website 单独编译某个页面,连带编译app_code
选中某一个页面,然后右键build page
- 对python变量的理解
#!/usr/bin/python class Person: '''some words content or descriptions!''' name='luomingchuan' _age = ...
- CentOS 6.7操作系统安装
如果由于是显卡驱动不兼容的话,在选择安装界面按tab键,进入命令行,然后在命令行后加上 nodmraid 关键字回车开始安装. 接下来选择hard driver 选择最后一个分区进行系统安装,然后 ...
- week3_notebooke1
今日内容:编码集合深浅cpoy文件操作函数初始函数函数的返回值函数的传参 初识: # == 数值比较 # is 比较的是内存地址 # id 测试的是内存地址 # 小数据池 str int # int: ...
- 一个基于React整套技术栈+Node.js的前端页面制作工具
pagemaker是一个前端页面制作工具,方便产品,运营和视觉的同学迅速开发简单的前端页面,从而可以解放前端同学的工作量.此项目创意来自网易乐得内部项目nfop中的pagemaker项目.原来项目的前 ...
- layer-list
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android=" ...