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. linux编译警告 will be initialized after

    http://blog.chinaunix.net/uid-17019762-id-3152012.html 作为一个有强迫症的人,实在是受不了 warning 的存在 这个warning是由于初始化 ...

  2. js实现table导出Excel,保留table样式

    浏览器环境:谷歌浏览器 1.在导出Excel的时候,保存table的样式,有2种方法,①是在table的行内写style样式,②是在模板里面添加样式 2.第一种方式:行内添加样式 <td sty ...

  3. ggplot2使用初探

    ggplot2已经成为了R语言中数据可视化的同义词, 这是一个强大的工具, 可以帮助我们制作优良的图表, 创造出令人吃惊的图片, 下面我们一起学习(本博文参考了知乎问题如何使用 ggplot2中黄宝臣 ...

  4. centos7的防火墙(firewalld)

    Centos7中默认将原来的防火墙iptables升级为了firewalld,firewalld跟iptables比起来至少有两大好处: 1.firewalld可以动态修改单条规则,而不需要像ipta ...

  5. 简单ORACLE分区表、分区索引

    前一段听说CSDN.COM里面很多好东西,同事建议看看合适自己也可以写一写,呵呵,今天第一次开通博客,随便写点东西,就以第一印象分区表简单写第一个吧. ORACLE对于分区表方式其实就是将表分段存储, ...

  6. CentOS7的firewall和安装iptables

    前言:CentOS7 的防火墙默认使用是firewall,而我们通常使用iptables: 本文记录了firewall基础的命令和iptables的安装和使用. firewall部分: part1 : ...

  7. 2015309南皓芯《Java程序设计》实验一(Java开发环境的熟悉)实验报告

    一.实验内容及步骤 (一)使用JDK编译.运行简单的java程序 命令行下的程序开发 步骤一(新建文件夹):打开windows下的cmd → 输入cd Code命令进入Code目录 → 输入md 20 ...

  8. 【LOJ】 #2540. 「PKUWC2018」随机算法

    题解 感觉极其神奇的状压dp \(dp[i][S]\)表示答案为i,然后不可选的点集为S 我们每次往答案里加一个点,然后方案数是,设原来可以选的点数是y,新加入一个点后导致了除了新加的点之外x个点不能 ...

  9. Deepin Linux安装MySQL方法

    sudo apt-get install mysql-server apt-get install mysql-client sudo apt-get install libmysqlclient-d ...

  10. 使用setsid替代nohup

    使用setsid替代nohup 使用 nohup 执行sudo -e时会有问题的.