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相关推荐

  1. Func vs. Action vs. Predicate [复制]

    本文翻译自:Func vs. Action vs. Predicate [duplicate] This question already has an answer here: 这个问题在这里已有答 ...

  2. 浅谈C#中常见的委托Func,Action,Predicate(转)

    一提到委托,浮现在我们脑海中的大概是听的最多的就是类似C++的函数指针吧,呵呵,至少我的第一个反应是这样的. 关于委托的定义和使用,已经有诸多的人讲解过,并且讲解细致入微,尤其是张子阳的那一篇.我就不 ...

  3. delegate、Lambda表达式、Func委托和Expression(TDelegate)表达式目录树

    1.delegate MSDN:一种安全地封装方法的类型,它与 C 和 C++ 中的函数指针类似.与 C 中的函数指针不同,委托是面向对象的.类型安全的和保险的.委托的类型由委托的名称定义 class ...

  4. [C#] Delegate, Multicase delegate, Event

    声明:这篇博客翻译自:https://www.codeproject.com/Articles/1061085/Delegates-Multicast-delegates-and-Events-in- ...

  5. 如何将自定义的 Delegate 转成 Func 委托?

    咨询区 AndreyAkinshin 场景是这样的,我自定义了一个 SomeDelegate 委托,然后将 Inc 方法灌入到其中,同时我也将 Inc 赋值给了 Func<int,int> ...

  6. .NET方法演化史 从Delegate到Lambda再到LINQ

    本文将介绍.NET方法演化史,从Delegate到Lambda再到LINQ.其中LINQ旨在成为,在 .NET 中,访问不同类型数据源的统一标准.希望对大家有所帮助. 在最近比较新的项目中,已经开始在 ...

  7. 七天学习计划_c#_[2][3][4][5]委托、事件、委托与事件的区别、泛型委托、Func\Action\predicate

    由于委托之前的博客已经详细写了,这里就简单的过一遍,复习一下: 了解委托 基于委托开发事件驱动程序变得非常简单. 使用委托可以大大简化多线程编程难度. 理解委托 委托也可以看做成一种数据类型,可以定义 ...

  8. 泛型委托 Predicate/Func/Action

    Predicate 泛型委托   表示定义一组条件并确定指定对象是否符合这些条件的方法.此委托由 Array 和 List 类的几种方法使用,用于在集合中搜索元素. 看看下面它的定义: // Summ ...

  9. 语法之知识点的改进(Func/Action)

    上一章我们讲到关于面向对象思想上C#和JAVA之差别.笔者分别从面向对象的三大特性入手.而本章主要讲一些C#改进的知识点.在.NET Framework 2.0之后出现很多新的知识点.这些知识点更是让 ...

最新文章

  1. 正则表达式匹配分组(|、(ab)、\num、(?P<name>)(?P=name))
  2. 压力测试的几种常见性解决方案
  3. 如何设计一个 RPC 系统
  4. Activity Monitor 闪退 无法进入睡眠
  5. cs寄存器 x86 特权模式_Windows操作系统管理进程和线程:内核模式和用户模式
  6. 负载均衡集群技术介绍
  7. 我的世界java1.15.2光影_我的世界Java版带光影
  8. [NACOS HTTP-POST] The maximum number of tolerable server reconnection errors has been reached
  9. linux内核源码分析之slab(四)
  10. Linux 切换JAVA 版本
  11. java 重写equals的要点_重写equals 方法的注意事项
  12. powerquery分组_Power Query 神奇的分组统计1
  13. vue html 原始 模板,vue系列3--模板语法(示例代码)
  14. 数学:矩估计和最大似然估计
  15. 在日本,虚拟人都能赚百万美元了
  16. ADI ADAU1701,ADAU1452,ADAU1938
  17. 李晓江:“双碳”目标下的社区绿色更新
  18. Ultraiso使用心得
  19. 新华三培训4---路由器
  20. systemverilog-$cast向下类型转换

热门文章

  1. Keras【Deep Learning With Python】实现线性回归模型
  2. c语言中的文件类型只有文本文件一种,C语言中的文件类型只有哪两种_后端开发...
  3. linux下echo /dev/ttys* 到字符设备文件,linux之tty pty pts
  4. 判断正则 shell_【US分享】Shell中的括号
  5. java inputstream 回退_系统学习 Java IO (十)----回退流 PushbackInputStream
  6. 企业网络推广——企业网络推广表示合理采集可助力网站品质提升
  7. 三句话不离开用户体验的seo专员到底如何做好用户体验优化?
  8. 优质网站策划从四个方面进行判断
  9. docker omv 防火墙_我的软路由折腾之旅 篇三:在openmediavault上通过Docker实现OPENWRT旁路由功能...
  10. Java多线程闲聊(一):概论