C#中常见的系统内置委托


Action类、Func类、Predicate<T>、Comparison<T>委托

  • Action类的委托
  1. Action委托 封装一个方法,该方法不具有参数并且不返回值
  2. Action<T>委托 封装一个方法,该方法只有一个参数并且不返回值

  3. Action<T1,T2>委托 封装一个方法,该方法具有两个参数并且不返回值
  4. static void Main(string[] args)
    {
      #region Action<T>委托示例
    //需求:打印出整型集合list的元素
    List<int> list = new List<int>() { , , , , };
    //将匿名方法分配给 Action<T> 委托实例
    Action<int> concat1 = delegate(int i) { Console.WriteLine(i); };
    list.ForEach(concat1);
    //将 lambda 表达式分配给 Action<T> 委托实例
    Action<int> concat2 = (i => Console.WriteLine(i));
    list.ForEach(concat2);
    Console.ReadKey();
      #endregion
    }
  • Func类的委托
  1. 1.Func(TResult)委托封装封装一个不具有参数但却返回 TResult 参数指定的类型值的方法
  2. Func(T,TResult)委托 封装一个具有一个参数并返回 TResult 参数指定的类型值的方法
  3. Func(T1,T2,TResult)委托 封装一个具有两个参数并返回 TResult 参数指定的类型值的方法
  4. static void Main(string[] args)
    {
    #region Func<T,TResult>委托示例
    //需求:查找整型集合list中大于3的所有元素组成的新集合,并打印出集合元素
    List<int> list = new List<int>() { , , , , };
    //将匿名方法分配给 Func<T,TResult> 委托实例
    Func<int, bool> concat1 = delegate(int i) { return i > ; };
    var newlist1 = list.Where(concat1).ToList();
    //将 Lambda 表达式分配给 Func<T,TResult> 委托实例
    Func<int, bool> concat2 = i => i > ;
    var newlist2 = list.Where(concat2).ToList();
    newlist1.ForEach(i => Console.WriteLine(i.ToString()));
    newlist2.ForEach(i => Console.WriteLine(i.ToString()));
    Console.ReadKey();
    #endregion
    }
  • Predicate<T>委托

    表示定义一组条件并确定指定对象是否符合这些条件的方法

  1. static void Main(string[] args)
    {
    #region Predicate<T>委托示例
    //需求:查找整型集合list中大于3的所有元素组成的新集合,并打印出集合元素
    List<int> list = new List<int>() { , , , , };
    //将匿名方法分配给 Predicate<T> 委托实例
    Predicate<int> concat1 = delegate(int i) { return i > ; };
    var newlist1 = list.FindAll(concat1);
    //将 lambda 表达式分配给 Predicate<T> 委托实例
    Predicate<int> concat2 = (c => c > );
    var newlist2 = list.FindAll(concat2);
    newlist1.ForEach(i => Console.WriteLine(i));
    newlist2.ForEach(i => Console.WriteLine(i));
           Console.ReadKey();
    #endregion
    }
  • Comparison<T>委托

   表示比较同一类型的两个对象的方法

  • static void Main(string[] args)
    {
    #region Comparison<T>委托示例
    //需求:将整型集合list中的所有元素倒序排列打印出来
    List<int> list = new List<int>() { , , , , };
    //将匿名方法分配给 Comparison<T> 委托实例
    Comparison<int> concat1 = delegate(int i, int j) { return j - i; };
    //将 lambda 表达式分配给 Comparison<T> 委托实例
    Comparison<int> concat2 = (i, j) => j - i;
    list.Sort(concat1);
    list.ForEach(c => Console.WriteLine(c.ToString()));
    list.Sort(concat2);
    list.ForEach(c => Console.WriteLine(c.ToString()));
           Console.ReadKey();
    #endregion
    }

C#中常见的系统内置委托用法详解(抄录)的更多相关文章

  1. Python中生成器和yield语句的用法详解

    Python中生成器和yield语句的用法详解 在开始课程之前,我要求学生们填写一份调查表,这个调查表反映了它们对Python中一些概念的理解情况.一些话题("if/else控制流" ...

  2. CSS中伪类及伪元素用法详解

    CSS中伪类及伪元素用法详解   伪类的分类及作用: 注:该表引自W3School教程 伪元素的分类及作用: 接下来让博主通过一些生动的实例(之前的作业或小作品)来说明几种常用伪类的用法和效果,其他的 ...

  3. SVN组成中trunk,branches and tags功能用法详解

    SVN组成中trunk,branches and tags功能用法详解  我相信初学开发在SVN作为版本管理时,都估计没可能考虑到如何灵活的运用SVN来管理开发代码的版本,下面我就摘录一篇文章来简单说 ...

  4. C#中常用的系统内置委托

    在公共语言运行时(CLR)环境中系统为我们内置了一些常用的委托,包括Action类的委托.Func类的委托.Predicate<T>委托.Comparison<T>委托等等.以 ...

  5. Python3 中 configparser 模块解析配置的用法详解

    configparser 简介 configparser 是 Pyhton 标准库中用来解析配置文件的模块,并且内置方法和字典非常接近.Python2.x 中名为 ConfigParser,3.x 已 ...

  6. oracle中的exists 和not exists 用法详解

    有两个简单例子,以说明 “exists”和“in”的效率问题 1) select * from T1 where exists(select 1 from T2 where T1.a=T2.a) ; ...

  7. oracle中的exists 和not exists 用法详解(转)

    有两个简单例子,以说明 “exists”和“in”的效率问题 1) select * from T1 where exists(select 1 from T2 where T1.a=T2.a) ; ...

  8. 转:Android中的Handler的机制与用法详解

    注:Message类的用法: message的几个参数都可以携带数据,其中arg1与arg2可以携带int类型,what是用户自定义的int型,这样接受者可以了解这个消息的信息. 说明:使用Messa ...

  9. Python3中strip()、lstrip()、rstrip()用法详解

    Python中有三个去除头尾字符.空白符的函数,它们依次为: strip: 用来去除头尾字符.空白符(包括\n.\r.\t.' ',即:换行.回车.制表符.空格) lstrip:用来去除开头字符.空白 ...

随机推荐

  1. 全面了解Nginx主要应用场景【转】

    前言 本文只针对 Nginx 在不加载第三方模块的情况能处理哪些事情,由于第三方模块太多所以也介绍不完,当然本文本身也可能介绍的不完整,毕竟只是我个人使用过和了解到过得.所以还请见谅,同时欢迎留言交流 ...

  2. F5后端nginx+tomcat应用如何获得用户的真实ip【转】

    根据业务需要要求记录每个通过wap或者客户端访问我们服务器的用户真实ip但是由于业务前端部署了两个3900系列的F5设备导致程序一直获得F5设备自身的ip,所以笔者考虑可能是因为F5导致无法获得用户的 ...

  3. 手动实现图片预览-放大缩小全屏支持IE9以上

    #{extends '/Index/index.html' /} #{set title:'意见反馈' /} <script src="/public/mgr/javascripts/ ...

  4. python网络编程--线程GIL(全局解释器锁)

    一:什么是GIL 在CPython,全局解释器锁,或GIL,是一个互斥体防止多个本地线程执行同时修改同一个代码.这把锁是必要的主要是因为当前的内存管理不是线程安全的.(然而,由于GIL存在,其他特性已 ...

  5. python软件依赖关系

    caffe:numpy,scikit-image opencv:numpy

  6. CVE-2013-2729 Adobe Reader和Acrobat 数字错误漏洞

    这个洞是在论坛里看到的,感觉很有意思,来学习一下.个人感觉IE或者说是浏览器的洞和Adobe洞都是比较难调的,主要是有大量的类难以摸清之间的关系. 这个洞是一个整数溢出的洞,这个不是重点.重点是利用的 ...

  7. 关于RundownProtect到底是什么东西

    RundownProtect这个字段相信只要是读过WRK源码的都会看过这个东西,这个字段在进程和线程的结构中都存在.最典型的例子就是对进程要进行什么操作的时候会先引用这个字段进行加保护,等操作结束后再 ...

  8. 一步一步学习IdentityServer3 (13) 令牌

    IdentityServer3中客户端保护了授权资源,不难看出在IdentityServer3中,有这样一个设置 AllowedScopes = new List<string> { &q ...

  9. android拾遗——Android之Notification和NotificationManager

    1.使用系统自带的Notification //创建一个NotificationManager的引用 String ns = Context.NOTIFICATION_SERVICE; Notific ...

  10. Hive(八)Hive的Shell操作与压缩存储

    一.Hive的命令行 1.Hive支持的一些命令 Command Description quit Use quit or exit to leave the interactive shell. s ...