delegate,event, lambda,Func,Action以及Predicate
delegate 委托
可以理解为c++ 语言中的函数指针,标示了方法调用的回调函数的规范。强类型,便于编译时检查是它的最大优点,从此可以和void * 说再见了。
event 事件
用以delegate委托声明事件,标示响应该事件的回调函数必须符合其声明委托的定义
lambda 表达式
在.net世界中表现为匿名委托,之前又要提到匿名方法(函数)
public class Test{
public void delegate Close(); //声明一个无参无返回值的委托
public event Close CloseEvent; //声明一个Close对应事件
}
static void Main() //模拟一个控制台
{
Test test = new Test();
test.CloseEvent += TestClose; //使用委托回调函数
test.CloseEvent += delegate{ Console.Write("test");} //使用匿名方法
test.CloseEvent += ()=> Console.Write("test"); //使用匿名委托 ,lambda表达式
}
static void TestClose()
{
Console.Write("test");
}
Func 有返回值的泛型委托
有多种方法重载,比如
Func<int> 表示无参,返回值为int的委托
Func<object,string,int> 表示传入参数为object, string 返回值为int的委托
即
Func<int> = delegate int Delegate();
Func<object,string,int> = delegate int Delegate(object, string);
Action 无返回值的泛型委托
Action 表示无参,无返回值的委托
Action<int,string> 表示有传入参数int,string无返回值的委托
Action act = delegate void Delegate();
Action<int,string> act = delegate void (int, string)
Predicate 返回bool型的谓语泛型委托
Predicate<int> 表示传入参数为int 返回bool的委托
Predicate<int> pre = delegate bool (int);
譬如这样使用 Predicate<int[]> pre = i => i.Length == 10;
用来判断传入的整形数组个数是否为10
http://www.cnblogs.com/yyliuliang/archive/2009/04/01/1427589.html
转载于:https://www.cnblogs.com/lmule/archive/2010/08/21/1805395.html
delegate,event, lambda,Func,Action以及Predicate相关推荐
- Func vs. Action vs. Predicate [复制]
本文翻译自:Func vs. Action vs. Predicate [duplicate] This question already has an answer here: 这个问题在这里已有答 ...
- 浅谈C#中常见的委托Func,Action,Predicate(转)
一提到委托,浮现在我们脑海中的大概是听的最多的就是类似C++的函数指针吧,呵呵,至少我的第一个反应是这样的. 关于委托的定义和使用,已经有诸多的人讲解过,并且讲解细致入微,尤其是张子阳的那一篇.我就不 ...
- delegate、Lambda表达式、Func委托和Expression(TDelegate)表达式目录树
1.delegate MSDN:一种安全地封装方法的类型,它与 C 和 C++ 中的函数指针类似.与 C 中的函数指针不同,委托是面向对象的.类型安全的和保险的.委托的类型由委托的名称定义 class ...
- [C#] Delegate, Multicase delegate, Event
声明:这篇博客翻译自:https://www.codeproject.com/Articles/1061085/Delegates-Multicast-delegates-and-Events-in- ...
- 如何将自定义的 Delegate 转成 Func 委托?
咨询区 AndreyAkinshin 场景是这样的,我自定义了一个 SomeDelegate 委托,然后将 Inc 方法灌入到其中,同时我也将 Inc 赋值给了 Func<int,int> ...
- .NET方法演化史 从Delegate到Lambda再到LINQ
本文将介绍.NET方法演化史,从Delegate到Lambda再到LINQ.其中LINQ旨在成为,在 .NET 中,访问不同类型数据源的统一标准.希望对大家有所帮助. 在最近比较新的项目中,已经开始在 ...
- 七天学习计划_c#_[2][3][4][5]委托、事件、委托与事件的区别、泛型委托、Func\Action\predicate
由于委托之前的博客已经详细写了,这里就简单的过一遍,复习一下: 了解委托 基于委托开发事件驱动程序变得非常简单. 使用委托可以大大简化多线程编程难度. 理解委托 委托也可以看做成一种数据类型,可以定义 ...
- 泛型委托 Predicate/Func/Action
Predicate 泛型委托 表示定义一组条件并确定指定对象是否符合这些条件的方法.此委托由 Array 和 List 类的几种方法使用,用于在集合中搜索元素. 看看下面它的定义: // Summ ...
- 语法之知识点的改进(Func/Action)
上一章我们讲到关于面向对象思想上C#和JAVA之差别.笔者分别从面向对象的三大特性入手.而本章主要讲一些C#改进的知识点.在.NET Framework 2.0之后出现很多新的知识点.这些知识点更是让 ...
最新文章
- 正则表达式匹配分组(|、(ab)、\num、(?P<name>)(?P=name))
- 压力测试的几种常见性解决方案
- 如何设计一个 RPC 系统
- Activity Monitor 闪退 无法进入睡眠
- cs寄存器 x86 特权模式_Windows操作系统管理进程和线程:内核模式和用户模式
- 负载均衡集群技术介绍
- 我的世界java1.15.2光影_我的世界Java版带光影
- [NACOS HTTP-POST] The maximum number of tolerable server reconnection errors has been reached
- linux内核源码分析之slab(四)
- Linux 切换JAVA 版本
- java 重写equals的要点_重写equals 方法的注意事项
- powerquery分组_Power Query 神奇的分组统计1
- vue html 原始 模板,vue系列3--模板语法(示例代码)
- 数学:矩估计和最大似然估计
- 在日本,虚拟人都能赚百万美元了
- ADI ADAU1701,ADAU1452,ADAU1938
- 李晓江:“双碳”目标下的社区绿色更新
- Ultraiso使用心得
- 新华三培训4---路由器
- systemverilog-$cast向下类型转换
热门文章
- Keras【Deep Learning With Python】实现线性回归模型
- c语言中的文件类型只有文本文件一种,C语言中的文件类型只有哪两种_后端开发...
- linux下echo /dev/ttys* 到字符设备文件,linux之tty pty pts
- 判断正则 shell_【US分享】Shell中的括号
- java inputstream 回退_系统学习 Java IO (十)----回退流 PushbackInputStream
- 企业网络推广——企业网络推广表示合理采集可助力网站品质提升
- 三句话不离开用户体验的seo专员到底如何做好用户体验优化?
- 优质网站策划从四个方面进行判断
- docker omv 防火墙_我的软路由折腾之旅 篇三:在openmediavault上通过Docker实现OPENWRT旁路由功能...
- Java多线程闲聊(一):概论