Action与Func 用法

Posted 陈小龙

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Action与Func 用法相关的知识,希望对你有一定的参考价值。

//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 第一个参数 string=x,int=y, result(最后一个参数为返回类型)=x+y
               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;
                  }
            }

return default(TData);//返回类型的默认值 TData为int类型,默认值为0 //
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 用法的主要内容,如果未能解决你的问题,请参考以下文章

[C#]action,delegate,func的用法和区别

[C#]action,delegate,func的用法和区别

Action 和 Func 的用法以及区别

系统自带的委托Action和Func

Func与Action

手动创建委托与使用 Action/Func 委托