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. HTTP之二 http 301 和 302的区别

    1.什么是301转向?什么是301重定向? 301转向(或叫301重定向,301跳转)是当用户或搜索引擎向网站服务器发出浏览请求时,服务器返回的HTTP数据流中头信息(header)中的状态码的一种, ...

  2. 十一、springboot之web开发之Filter

    我们常常在项目中会使用filters用于录调用日志.排除有XSS威胁的字符.执行权限验证等等.Spring Boot自动添加了OrderedCharacterEncodingFilter和Hidden ...

  3. 01 Getting Started 开始

    Getting Started 开始 Install the Go tools Test your installation Uninstalling Go Getting help   Downlo ...

  4. urllib2使用初探

    在入门urllib2之前,我想应该先调研一下urllib与urllib2的区别[1].首先我们要明白的是,这两个模块不可以相互替代.两者都是接受URL请求的模块,但是提供了不同的功能,两个显著的区别是 ...

  5. the server ssl certificate failed to verify

    很久没上传项目之后,远程端断开联系 如果是git,就git clone,重新把项目拉下来. svn的话,就svn ls,拉下项目.

  6. sqlserver日期推算(年,季度,月,星期推算)

    DECLARE @dt datetime SET @dt=GETDATE() DECLARE @number int SET @number=3 --1.指定日期该年的第一天或最后一天--第一天为1月 ...

  7. GreenPlum学习笔记:基础知识

    一.介绍 GreenPlum分布式数据仓库,大规模并行计算技术. 无共享/MPP核心架构 Greenplum数据库软件将数据平均分布到系统的所有节点服务器上,所以节点存储每张表或表分区的部分行,所有数 ...

  8. Netty 实现SSL安全连接(wss://)

    原文:Netty5使用自签证书实现SSL安全连接 在客户端是https:// 协议下,使用ws:// 协议连接会报错的,得需要使用wss:// 连接.(ip连接失败时使用域名连接) netty创建服务 ...

  9. 004 爬虫(最初的爬虫方式,以及urllib2)

    一:最初的爬取方式 1.代码示例 # coding=utf-8 import urllib2 request=urllib2.Request("http://www.baidu.com&qu ...

  10. JSP的学习二(请求转发与 重定向)

    一: 1.介绍知识点 1). 本质区别: 请求的转发只发出了一次请求, 而重定向则发出了两次请求. 具体: ①. 请求的转发: 地址栏是初次发出请求的地址.  请求的重定向: 地址栏不再是初次发出的请 ...