//vs2017 + framework4.6.2

//zip    https://github.com/chxl800/ActionFuncDemo

//源文件git   https://github.com/chxl800/ActionFuncDemo.git

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ActionFunc
{

//Action与Func 都是  net内置泛型委托.

//1 Action  没返回值 , 2 Func  有返回值
   static class Program
   {
        static void Main(string[] args)
        {

//func 简单Lambda用法
               Func<int> f1 = () => {
                        return 10;
               };
               Console.WriteLine(f1());

//func 简单Lambda用法2
               Func<string, int, string> f2 = (x, y) =>
               {
                          return x + y;
               };
              Console.WriteLine(f2("你好",666));

//action 简单Lambda用法
              Action<int, int> ac1 = (x, y) =>
              {
                    Console.WriteLine("{0}*{1}={2}",x,y, x * y);
              };
              ac1(10, 99);

//action使用
              Actiontmp<int, int>((t1, t2) => { Console.WriteLine("Actiontmp:{0}+{1}={2}", t1, t2, t1 + t2); }, 12, 15);

//初始值
              List<int> list = new List<int>() { 10, 22, 2, 5, 89, 75 };

//func用法获取 实体
             try {
                  var entity = list.GetEntity(m => m > 100);
                  Console.WriteLine(entity);
              }
             catch {
                  var d = 222;
             }

//func用法获取 列表
             var nlist = list.GetSelect(m => m > 6);
             foreach (var entity in nlist)
             {
                 Console.WriteLine(entity);
             }
             Console.ReadKey();

}

//func用法获取 实体
     public static TData GetEntity<TData>(this IEnumerable<TData> list, Func<TData, bool> func)
     {
            foreach (TData entity in list)
            {
                  if (func(entity))
                  {
                       return entity;
                  }
           }

throw new Exception("不存在满足条件的第一个元素!");
            //return ;
     }

//func用法获取 列表
      public static List<TData> GetSelect<TData>(this IEnumerable<TData> list, Func<TData, bool> func)
      { 
               List<TData> nlist = new List<TData>();
               foreach (TData entity in list)
               {
                         if (func(entity))
                         {
                                nlist.Add(entity);
                         }
                }
                return nlist;
       }

//action使用
       public static void Actiontmp<T1,T2>(Action<T1,T2> act, T1 t1, T2 t2) {
                       act(t1, t2);
       }

}

}

Action与Func 用法的更多相关文章

  1. Func和Action委托简单用法

    Func和Action类是特殊的类型,它们允许你在不必指定自定义委托类型的情况下,去使用委托.在整个.NET框架中都可以使用它们.例如,在我们考察并行计算时,你也会看到这两个类的示例. 上面一段文字是 ...

  2. C#之Action和Func的用法

    以前我都是通过定义一个delegate来写委托的,但是最近看一些外国人写的源码都是用action和func方式来写,当时感觉对这很陌生所以看起源码也觉得陌生,所以我就花费时间来学习下这两种方式,然后发 ...

  3. Action 和 Func 的用法以及区别

    Action 无返回值 Func 有返回值,且最后一个参数为返回值 Action用法 public static void test(string s) { Console.WriteLine(&qu ...

  4. C#之Action和Func的用法(转自 https://www.cnblogs.com/LipeiNet/p/4694225.html)

    以前我都是通过定义一个delegate来写委托的,但是最近看一些外国人写的源码都是用action和func方式来写,当时感觉对这很陌生所以看起源码也觉得陌生,所以我就花费时间来学习下这两种方式,然后发 ...

  5. [C#] 委托之Action和Func区别

    一.说明 一般我们定义委托都是有如下两步: public delegate void MyDelegate(string name);//定义委托 public MyDelegate myDelega ...

  6. C#action和func的使用

    以前我都是通过定义一个delegate来写委托的,但是最近看一些外国人写的源码都是用action和func方式来写,当时感觉对这很陌生所以看起源码也觉得陌生,所以我就花费时间来学习下这两种方式,然后发 ...

  7. [代码]--C#action和func的使用

    以前我都是通过定义一个delegate来写委托的,但是最近看一些外国人写的源码都是用action和func方式来写,当时感觉对这很陌生所以看起源码也觉得陌生,所以我就花费时间来学习下这两种方式,然后发 ...

  8. 委托和lambda表达式,Action和Func

    1.为什么要用委托 我们为什么要有委托?任何东西存在即合理,不合理的也会被时间淘汰掉,委托既然存在肯定有存在的必要,我们来看一下什么时候可以用到委托. 接下来我们有个需求,就是调用一个方法,取出1-1 ...

  9. C#之Action和Func

    以前我都是通过定义一个delegate来写委托的,但是最近看一些外国人写的源码都是用action和func方式来写,当时感觉对这很陌生所以看起源码也觉得陌生,所以我就花费时间来学习下这两种方式,然后发 ...

随机推荐

  1. PHP中empty、isset和is_null的使用区别

    关于PHP中empty().isset() 和 is_null() 这三个函数的区别,之前记得专门总结过,上次又被问到,网上已经很多,就用几个例子来说明: 测试用例选取: <?php $a;$b ...

  2. BNF巴科斯-诺尔范式

    概述 BNF是描述编程语言的文法.自然语言存在不同程度的二义性.这种模糊.不确定的方式无法精确定义一门程序设计语言.必须设计一种准确无误地描述程序设计语言的语法结构,这种严谨.简洁.易读的形式规则描述 ...

  3. Scrum过程管理学习心得

    认识敏捷开发 在课堂上了解了瀑布开发,又在课下学习敏捷开发过程后,我发现,敏姐团队做的开发工作虽然和瀑布开发一模一样,但他们的做事方式很不一样.简单来说,两者的差别在于:瀑布开发必须先完成当前的步骤后 ...

  4. leetcode-surrounded regions-ZZ

    Problem Statement (link): Given a 2D board containing 'X' and 'O', capture all regions surrounded by ...

  5. Ubuntu安装使用pyltp和StanfordCoreNLP

    环境:Ubuntu 16.04+anaconda3 一.pyltp 1. 安装 直接用pip安装: pip install pyltp 然后下载语言模型库,网址:https://pan.baidu.c ...

  6. python 枚举类

    枚举类 Enum类 from enum import Enum Month = Enum('Month', ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Ju ...

  7. vsphere的P2V工具做的物理机迁移到虚拟机报错out of memory

     vsphere的P2V工具做的物理机迁移到虚拟机  迁移成功,但是启动报错  进入rescue模式后发现是sysctl.conf文件的参数设大了因为虚拟机的内存没有物理机内存大 kernel.shm ...

  8. Linux的man手册共有以下几个章节

    Linux提供了丰富的帮助手册,当你需要查看某个命令的参数时不必到处上网查找,只要man一下即可. Linux的man手册共有以下几个章节: 1.Standard commands (标准命令) 2. ...

  9. Linux 命令行 发送邮件

    1.mail -s hi xx@yy.com 给xx@yy.com发一封主题为hi的信(没有正文) 编辑完内容后Ctrl-D结束. 2.echo "This is a test mail!& ...

  10. 1.Jdeveloper打印出完整日志(-Djbo.debugoutput=console)

    有时候在JDeveloper中需要打印出来比较系统和完整的ADF运行时日志 例如,想查看VO当前执行的是哪个View Criteria,运行的完整SQL语句到底如何 以及当前Binding Varia ...