//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. .NET开源工作流RoadFlow-流程运行-运行时监控

    流程实例参与者都可以随时查看流程实例的运行情况,如果是待办任务,则在待办事项列表的后面点查看,如果是已完成任务则可以在已办事项列表的后面点查看: 打开之后默认为列表方式显示流程的处理过程,还可以点图形 ...

  2. Java类——JDBC链接、并操作MySQL数据库

    Java——MySQL数据库操作类 package pkg.src.database; import java.sql.*; public class MYSQL_DBManager { // //定 ...

  3. RxJava 中的map与flatMap

    1.map和flatMap都是接受一个函数作为参数(Func1) 2.map函数只有一个参数,参数一般是Func1,Func1的<I,O>I,O模版分别为输入和输出值的类型,实现Func1 ...

  4. 沙盒 sandbox 简记随笔

    沙盒又称沙箱(sandbox),是一种按照  安全策略  限制  程序行为  的  执行环境. “沙盒”技术的实践运用流程是: 1. 让疑似病毒文件的可疑行为在虚拟的“沙盒”里充分运行,“沙盒”会记下 ...

  5. 4.Linux文件系统层次体系标准

    这是不完整的linux文件系统层次体系标准,不是所有Linux发行版都根据这个标准,但大多数都是: 目录 评论 / 根目录,万物起源. /bin 包含系统启动和运行所必须的二进制程序. /boot 包 ...

  6. Android学习——Service(一)

    这篇博文来介绍Android另一个十分重要的组件,Service.Service和Activity很类似,区别在于它运行在后台,不可见且没有界面.Service的优先级高于Activity,当系统负载 ...

  7. TreeMap----的实现原理(红黑树)

    TreeMap的实现是红黑树算法的实现,所以要了解TreeMap就必须对红黑树有一定的了解,其实这篇博文的名字叫做:根据红黑树的算法来分析TreeMap的实现,但是为了与Java提高篇系列博文保持一致 ...

  8. Thread.Join()的详解

    什么是进程?当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源.而一个进程又是由多个线程所组成的. 什么是线程?线程是程序中的一个执行流,每个线程都有自己的专有寄 ...

  9. 【系统】在windows中追加/删除虚拟打印机

    由于项目需要在windwos系统中添加多台虚拟打印机(能够正常打印出纸),查找了一下系统函数. 使用 rundll32 printui.dll,PrintUIEntry,在CMD中运行,在弹出框中得到 ...

  10. 关于mysql启动问题---mysqld_safe mysqld from pid file * ended

    #在[mysqld]中添加: datadir = /usr/local/mysql/data         #添加 log-error = /usr/local/mysql/data/error.l ...