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. 编译器是如何实现32位整型的常量整数除法优化的?[C/C++]

    引子 在我之前的一篇文章[ ThoughtWorks代码挑战——FizzBuzzWhizz游戏 通用高速版(C/C++ & C#) ]里曾经提到过编译器在处理除数为常数的除法时,是有优化的,今 ...

  2. 牛x的JavaScript编辑器你知道几个

    英文:Martin Heller  译文:葡萄城控件 学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入学习交流群343599877,我们一起学前端! 对于JavaScript程序员来说,目前有很 ...

  3. vue+elementui 新增和编辑如何实现共用一个弹框

    //html代码: //按钮 <el-button type="primary" size="medium" @click="addEquipm ...

  4. No.9 selenium学习之路之CSS定位

    CSS定位方式: 元素中间加“.”表示是class 1.通过ID定位 driver.find_element_by_css_selector("#ID值") 2.通过class定位 ...

  5. 牛客红包OI赛 C 小可爱表白

    据说是个公式题. Code #include<cstdio> #include<cstring> #include<algorithm> using namespa ...

  6. GeoHash核心原理解析 - OPEN 开发经验库

    阅读目录 引子 一.感性认识GeoHash 二.GeoHash算法的步骤 三.GeoHash Base32编码长度与精度 三.GeoHash算法 四.使用注意点 引子 机机是个好动又好学的孩子,平日里 ...

  7. C++ 实现memcpy和strcpy

    /** * @Method: Memcpy * @Access: public * @Return: void * * @Param : dst - 目的起始地址 * @Param : src - 源 ...

  8. (三)Rest风格的资源URL

    第一节:Restful风格的资源URL简介 第二节:SpringMVC对Rest风格的支持 第三节:@PathVariable获取Url变量 第四节:SpringMVC对静态资源的处理 http:// ...

  9. 21 包含min函数的栈

    定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数. C++: class Solution { private: stack<int> dataStack ; stac ...

  10. Caffe训练AlexNet网络模型——问题一

    训练AlexNet网络时,出现Check failed:datum_height >= crop_size (size vs. 227)错误,具体如下图所示: 根据提示,问题是crop_size ...