C# 中 delegate、event、Action、Func使用案例解析

一:delegate与event配合使用

public static class Evt_Test{public static string strEquals(string str1, string str2){Console.WriteLine(str1 + str2);return str1.Concat(str2).ToString();}}

定义委托以及事件

  private delegate void del_handler();private static event del_handler evt_handler;

调用

static void Main(string[] args){evt_handler += new del_handler(() => Evt_Test.strEquals("s", "dedee"));evt_handler.Invoke();Console.ReadKey();}

二:Action与Event

Action是无返回值的泛型委托。

   Action 表示无参,无返回值的委托

   Action<int,string> 表示有传入参数int,string无返回值的委托

  Action<int,string,bool> 表示有传入参数int,string,bool无返回值的委托

Action<int,int,int,int> 表示有传入4个int型参数,无返回值的委托

   Action至少0个参数,至多16个参数,无返回值。

 //定义 private static event Action evt_Handler;//调用static void Main(string[] args){evt_Handler += new Action(Evt_Test.Testing);evt_Handler?.Invoke();Console.ReadKey();}//方法public static class Evt_Test{public static void Testing(){Console.WriteLine("testing");}}

三: Event与Func案例解析

C#中Fun和前面介绍过的Action有点类似,都是一个委托方法 , 不同的是Func是有返回值的,而Action没有

Fun常用有两个参数,前面的是输入参数,后面的是输出参数(意味着是在另一部分运算中产生的)恰恰是整个方法的返回值

(T arg)代表的是和输出参数类型相同的方法名称(返回值的类型和Func输出参数类型相同)

Fnc最多有16个输入参数,有且只有一个输出参数

Func<TResult> function代表function函数的返回值得类型是TResult。

   private static event Func<int> evtHandler;static void Main(string[] args){evtHandler += new Func<int>(() => Evt_Test.Mul(2, 3));evtHandler?.Invoke();Console.ReadKey();}public static class Evt_Test{public static int Mul(int i, int j){Console.WriteLine(i * j);return i * j;}}

以上为今天全部内容,概念性的东西比较少,请大家自行百度,若有不正之处,请大家斧正,感谢!!!

C# delegate、event、Action、Func使用案例解析相关推荐

  1. delegate,event, lambda,Func,Action以及Predicate

    delegate 委托 可以理解为c++ 语言中的函数指针,标示了方法调用的回调函数的规范.强类型,便于编译时检查是它的最大优点,从此可以和void * 说再见了. event 事件 用以delega ...

  2. unity学习-委托(delegate),事件(event),Action,Func

    unity学习 委托 含义 定义 使用 事件 含义 使用 在进行项目的过程中,一直存在着对代码管理不当的问题,所以需要学习一些科学的代码思维,减少后期功能的修改与迭代引发的代码冗杂和内存爆炸 可以看b ...

  3. C#里关于委托的使用方法使用delegate、Action、func和Thread声明、锁安全

    1.委托的类型: Invoke or BeginInvoke Invoke或者BeginInvoke方法都需要一个委托对象作为参数.委托类似于回调函数的地址,因此调用者通过这两个方法就可以把需要调用的 ...

  4. Delegate,Action,Func,匿名方法,匿名委托,事件

    一.委托Delegate 一般的方法(Method)中,我们的参数总是string,int,DateTime...这些基本的数据类型(或者没有参数),比如 [c-sharp] view plainco ...

  5. Delegate,Action,Func,匿名方法,匿名委托,事件 (转载)

    Delegate,Action,Func,匿名方法,匿名委托,事件 (转载) 一.委托Delegate 一般的方法(Method)中,我们的参数总是string,int,DateTime...这些基本 ...

  6. C#基础知识学习之 ✨ 委托的兄弟姐妹们 delegate、Action、Func、Predicate

    委托 delegate.Action.Func.Predicate 简单介绍 delegate.Action.Func.Predicate 几种基础的委托结构 几种委托的实例用法 开始分析 deleg ...

  7. C#委托(delegate、Action、Func、predicate)和事件

    C#委托(delegate.Action.Func.predicate)和事件 - 园子的蜗牛 - 博客园 C#之委托 - 摸鱼王 - 博客园 C++函数指针与C#委托之间有何联系 - 51CTO.C ...

  8. C# Delegate、delegate、 Action、 Func

    首先Delegate 和delegate,Delegate是类, delegate是关键字,按照官网的解释,使用delegate定义的委托类型,最终会被编译器编译为Delegate类型 Action和 ...

  9. C# 中的 Action, Func, EventHandler 和 EventHandlerTEventArgs

    C# 中常用内置委托 Action, Func, EventHandler 和 EventHandler<TEventArgs> 介绍 Action Delegate 封装一个没有返回值的 ...

最新文章

  1. 剑指offer 28:字符串的排列
  2. 对Linux Kernel 4.15的支持的VirtualBox 5.2.8发布
  3. mysql select 所有表_怎样用SQL语句查询一个数据库中的所有表
  4. 替代jquery1.9版本以前的toggle事件函数(开关)
  5. 移动端代码规范小结(一)
  6. salt的远程部署java-1.6.0-openjdk
  7. threadlocal使用_多方位点评ThreadLocal,细看各大开源软件实现
  8. mysql数据表中取几列_MySQL查询数据表中数据记录(包括多表查询)
  9. 计算机中的进制位运算
  10. [sklearn机器学习]线性回归模型
  11. python调用cmd执行命令_python怎么运行cmd命令
  12. 信息安全管理体系ISO27001IT服务管理体系ISO20000(转)
  13. 内存分配方式及内存碎片
  14. java规则计算_亲属计算规则算法--java实现(关键算法摘要)
  15. 一个可以免费下载表情包的小程序
  16. Android Studio从gthub上导入新项目的时候,R文件丢失的问题
  17. HTML转义字符、Javascript转义字符、HTML特殊字符对照表
  18. Leetcode 345: Reverse Vowels of a String
  19. 【路径规划】基于matlab拓扑图和跟随领导者机器人编队路径规划【含Matlab源码 2500期】
  20. 创业是红海好还是蓝海好?

热门文章

  1. 基于FPGA的sigma delta ADC软件无线电设计
  2. A collection with cascade=“all-delete-orphan“ was no longer referenced by the owning entity instance
  3. 使用python编写三个吃货吃馒头与一个伙夫生产馒头(线程与锁)
  4. sku设计mysql_商品SKU功能设计与优化
  5. python中的类是什么意思_如何理解python中的类和方法(转)
  6. 电脑永久删除文件怎么找回来?分享一种数据恢复方法
  7. .NET Compact Framework 移动开发步步来(3)
  8. bootstrap-table+Django: 服务端分页
  9. C语言字符串库函数strlen、strcpy、strcat、strcmp、strstr使用详解及其实现
  10. ipad Linux双系统,传13英寸iPad将使用双系统