//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. Ubuntu 18.04 的网络配置

    netplan简介 目前,ubuntu18.04上使用了netplan 作为网络配置工具:在终端上配置网络参数跟之前的版本有比较大的差别 Netplan工作流程如下图所示:通过读取  /etc/net ...

  2. Linux Firefox Adobe Flash Player 安装和更新

    1.下载 Firefox Adobe Flash Player 使用Linux上的火狐浏览器访问如下的下载网址: https://get.adobe.com/flashplayer/ 选择下载 &qu ...

  3. python三次输入错误验证登录

    # login.py# 提示用户输入用户名和密码# 验证用户名和密码# 如果v错误,则输出用户名或密码错误# 如果成功,则输出欢迎,xxxnum = 0while True: name = input ...

  4. win 8系统:System.IO.FileNotFoundException: 未能加载文件或程序集“CefSharp.Core.dll”或它的某一个依赖项。找不到指定的模块

    最近用CefSharp做了一个chrome核心的浏览器. 在win 7.win 10系统上都正常运行,但是在win 8系统上报错了. win 8系统:System.IO.FileNotFoundExc ...

  5. .net通过代码发送邮件

    关键代码: 需要引用命名空间: using System.Net.Mail;using System.Net; MailMessage mailObj = new MailMessage(); mai ...

  6. 【Leetcode】【Medium】Combination Sum II

    Given a collection of candidate numbers (C) and a target number (T), find all unique combinations in ...

  7. MySql接口API函数综述

    C API函数概述 函数 描述 mysql_affected_rows() 返回上次UPDATE.DELETE或INSERT查询更改/删除/插入的行数. mysql_autocommit() 切换 a ...

  8. 保存头像- vue项目-base64字符串转图片

    <img :onerror="errpic" class="customerHead" :src="param.customerHead&quo ...

  9. Jenkins报错Caused: java.io.IOException: Cannot run program "sh" (in directory "D:\Jenkins\Jenkins_home\workspace\jmeter_test"): CreateProcess error=2, 系统找不到指定的文件。

    想在本地执行我的python文件,我本地搭建了一个Jenkins,使用了execute shell来运行我的脚本,发现报错 [jmeter_test] $ sh -xe D:\tomcat\apach ...

  10. pexpect 初坑

    通过一个很坑的任务,最近认识了一个新坑: pexpect .其实基本的用法并不难,不过,我还是跟以前一样,把几个基本函数的坑蹚了个遍.有感而发,记录一下. 首先简单的介绍一下这个坑,哦不对,这个库.这 ...