delegate传统的委托,无泛型概念。

namespace ConsoleApplication1
{

  class Program
  {

    private delegate bool Mydel(int a, int b);

    private static bool OneFun(int a, int b)
    {
      Console.WriteLine("a={0},b={1}", a, b);

      return a > b;
    }

    static void Main(string[] args)
    {
      Mydel C = new Mydel(OneFun);
      C(1, 2);

      Console.ReadLine();
    }
  }
}

Action,
Action(Of T) 委托
封装一个方法,该方法只有一个参数并且不返回值。
理解:也是委托,输入参数为泛型,可以多达16个输入参数(in),返回值都必须为空。
public delegate void Action<in T1>
public delegate void Action<in T1,in T2>
...
....
public delegate void Action<in T1,in T2,in T3,in T4,in T5,in T6>

namespace ConsoleApplication1
{

  class Program
  {

    private delegate bool Mydel(int a, int b);

    private static void OneFun(int a, string b,int c,object d)
    {
      Console.WriteLine("im here");

      return;
    }

    static void Main(string[] args)
    {
      Action<int, string, int, object> MyAction = OneFun;
      OneFun(1,"ok",4,5);
      Console.ReadLine();

    }
    

  }
}

Func
Func<T, TResult> 委托
封装一个具有一个参数并返回 TResult 参数指定的类型值的方法。
理解:也是委托,输入参数为泛型,只是一个返回值,可多达0~16个输入参数。
delegte Func<out TResult>
delegte Func<in T1,out TResult>
delegte Func<in T1,in T2,out TResult>
...
....
delegte Func<in T1,in T2,in T3,in T4,out TResult>

namespace ConsoleApplication1
{

  class Program
  {

    private static int OneFun(int a, string b,int c,object d)
    {
      Console.WriteLine("im here");

      return 2;
    }

    private static int fun()
    {
      Console.WriteLine("im here2");
      return 1;
    }

    static void Main(string[] args)
    {
      Func<int> MyFunc = new Func<int>(fun);
      MyFunc();

      Func<int, string, int, object, int> MyFunc2 = new Func<int, string, int, object, int>(OneFun);
      OneFun(1,"jkjkj",3,4);

      Console.ReadLine();

    }
  }
}

转载于:https://www.cnblogs.com/zsx-blog/archive/2013/04/04/2999355.html

C# delegate ,Action,Func相关推荐

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

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

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

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

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

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

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

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

  5. 如何使用 C# 中的 Action, Func,Predicate

    译文链接:https://www.infoworld.com/article/3057152/how-to-work-with-action-func-and-predicate-delegates- ...

  6. lambda表达式不使用委托(delegate) 用FUNC

    lLambda不使用delegate关键字,而使用  Lambda运算符 => goes to l    1.Func<int,string> getInput = (int age ...

  7. c#中的委托、事件、Func、Predicate、Observer设计模式以及其他

    原文地址:[学习笔记]c#中的委托.事件.Func.Predicate.Observer设计模式以及其他 参考资料: 1. 简单谈谈事件与委托 2. C#中的委托和事件(上) 3. C#中的委托和事件 ...

  8. Silverlight与WPF中BeginInvoke的差异

    Silverlight/WPF中,如果要在多线程中对界面控件值做修改,用Dispatcher对象的BeginInvoke方法无疑是最方便的办法 ,见:温故而知新:WinForm/Silverlight ...

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

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

  10. [C#基础]Func和Action学习

    目录 委托 Action Func 总结 委托 委托的那些事 关于委托的基本定义,在很久之前的这篇文章中,有个简单的介绍.稍微回顾一下. 委托是c#中类型安全的,可以订阅一个或多个具有相同签名方法的函 ...

最新文章

  1. 古剑奇谭网络版服务器位置,《古剑奇谭网络版》服务器数据互通调研公告
  2. 字符串暴力匹配算法+思路分析
  3. 使用SQL Server 2005作业设置定时任务
  4. 雅思阅读真经总纲_你们要的刘洪波《雅思阅读真经总纲》高清PDF扫描版来了!!...
  5. MongoDBTool - 测试版【GUI美化完毕】 源代码发布 --MongoDB爱好者,Winform爱好者 请进...
  6. ERROR 1290 (HY000): The MySQL server is running withnbs
  7. 全国30m精度二级分类土地利用数据
  8. c语言程序从源代码到二进制机器码,C语言源代码转变为可执行程序的过程
  9. 蜂鸣器的专业分类是这样的
  10. 窗口风格 :ModifyStyle函数的用法:
  11. go操作excel单元格合并
  12. day02-2学习过程笔记
  13. 排序算法的代码--选择排序综合训练题
  14. 笔记本电脑如何蹭WiFi
  15. c语言程序设计知到网课答案,C语言程序设计(山东联盟)2020知到网课答案
  16. 应届生如何做好一份简历?
  17. 接口调用成功,功能实现但是返回404报错
  18. vs2017python配置opencv_[opencv +VS2017] opencv、vs2017安装配置,环境搭建
  19. Capacitor Plugin创建
  20. IMX323 I2C驱动

热门文章

  1. DataTable,List和Json的转换
  2. python求一个数的因子_python语言求因数方法的实现源码
  3. python赋值运算符_解释一下python中的赋值运算符
  4. oracle 除重更新,oracle数据库11.2.0.3升级到11.2.0.4
  5. java父类的私有方法可以被继承吗_简单通俗的解释java中的继承
  6. soc设计方法与实现_冷轧钢板局部激光热处理实现汽车轻量化设计新方法
  7. mysql sql优化与调优机制详解_MySQL性能调优——锁定机制与锁优化分析详解
  8. mysql创建jdbc数据库_创建本地数据库mySQL并连接JDBC
  9. Cesium:实现动态画点、线并测距
  10. java服务端验证框架_SpringBoot服务端数据校验过程详解