Func是一种委托,这是在3.5里面新增的,2.0里面我们使用委托是用Delegate,Func位于System.Core命名空间下,使用委托可以提升效率,例如在反射中使用就可以弥补反射所损失的性能。

Action<T>和Func<T,TResult>的功能是一样的,只是Action<T>没有返类型,

Func<T,T,Result>:有参数,有返回类型
Action,则既没有返回也没有参数,

Func<T,TResult> 
的表现形式分为以下几种:

1。Func<T,TResult>
2。Func<T,T1,TResult>
3。Func<T,T1,T2,TResult>
4。Func<T,T1,T2,T3,TResult>
5。Func<T,T1,T2,T3,T4,TResult>

分别说一下各个参数的意义,TResult表示 
委托所返回值 所代表的类型, T,T1,T2,T3,T4表示委托所调用的方法的参数类型,

以下是使用示例:

Func<int, bool> myFunc = null;//全部变量

myFunc = x => CheckIsInt32(x); 
//给委托封装方法的地方 使用了Lambda表达式

private bool CheckIsInt32(int pars)//被封装的方法
{
  return pars == 5;
}

bool ok = myFunc(5);//调用委托

MSDN:http://msdn.microsoft.com/zh-cn/library/bb534303(VS.95).aspx

但是如果我们需要所封装的方法不返回值,增么办呢?就使用Action!

可以使用 
Action<T1, T2, T3, T4>委托以参数形式传递方法,而不用显式声明自定义的委托。封装的方法必须与此委托定义的方法签名相对应。也就是说,封装的方法必须具有四个均通过值传递给它的参数,并且不能返回值。(在 C# 中,该方法必须返回 void。在 Visual Basic 中,必须通过 Sub…End Sub 结构来定义它。)通常,这种方法用于执行某个操作。

使用方法和Func类似!

MSDN:http://msdn.microsoft.com/zh-cn/library/bb548654(VS.95).aspx

Action:既没有返回,也没有参数,使用方式如下:

Action 
action = null;//定义action

action =  CheckIsVoid;//封装方法,只需要方法的名字

action();//调用

总结:

使用Func<T,TResult>和Action<T>,Action而不使用Delegate其实都是为了简化代码,使用更少的代码达到相同的效果,不需要我们显示的声明一个委托。

Func<T,TResult>的最后一个参数始终是返回类型,而Action<T>是没有返回类型的,而Action是没有返回类型和参数输入的。

转载于:https://www.cnblogs.com/dragon-L/p/4704651.html

Func和Action的介绍及其用法相关推荐

  1. 第十节:委托和事件(2)(泛型委托、Func和Action、事件及与委托的比较)

    一. 泛型委托 所谓的泛型委托,即自定义委托的参数可以用泛型约束,同时内置委托Func和Action本身就是泛型委托. 将上一个章节中的Calculator类中的方法用自定义泛型委托重新实现一下. 1 ...

  2. Func vs. Action vs. Predicate [复制]

    本文翻译自:Func vs. Action vs. Predicate [duplicate] This question already has an answer here: 这个问题在这里已有答 ...

  3. Java 动态代理介绍及用法

    Java 动态代理介绍及用法 一,静态代理模式的特点 在之前的文章中 java代理模式 已经介绍里java里的(静态)代理模式 下面是上文静态代理类的例子: public class ProxyBea ...

  4. Java中BigDecimal类介绍及用法

    Java中BigDecimal类介绍及用法 Java中提供了大数字(超过16位有效位)的操作类,即 java.math.BinInteger 类和 java.math.BigDecimal 类,用于高 ...

  5. chrome介绍与用法

    chrome介绍与用法 chrome介绍与用法 1. 认识devTools Elements 面板 console控制面板 Sources 资源面板 chrome介绍与用法 1. 认识devTools ...

  6. at指令 meid_AT指令介绍及用法,AT 指令集合

    AT指令介绍及用法,AT 指令集合 AT指令在当代手机通讯中起着重要的作用,能够通过AT指令控制手机的许多行为,包括拨叫号码.按键控制.传真.GPRS等.西门子M55手机为我提供了很多的AT指令,网络 ...

  7. C#中File和FileStream的简单介绍和用法

    前言 在近期的工作过程中发现自己的基础比较薄弱,所以最近在恶补基础知识.下面就对我所学习的File类和FileStream进行简单的总结. 1.首先先介绍File类和FileStream文件流 1.1 ...

  8. c语言isnumber函数用法,科技教程:ISNUMBER函数介绍及用法

    如今越来越多的小伙伴对于ISNUMBER函数介绍及用法这方面的问题开始感兴趣,看似平静的每一天,在每个人身上都在发生着各种各样的故事,因为大家现在都是想要了解到此类的信息,那么既然现在大家都想要知道I ...

  9. TS简单介绍以及用法

    TS简单介绍以及用法 一.什么是TS TS是TypeScript的缩写,是JavaScript的超集 (JS有的TS都有),也可以说TS是 type + js,加了一个类型.比如:JS:let a = ...

最新文章

  1. 【论文速读】基于投影方法的激光雷达点云处理比较
  2. Java多线程之线程间协作 notify与wait的使用
  3. 《Cisco QoS认证考试指南(第2版)》——1.1节“我已经知道了吗?”测试
  4. Spring 一二事(4) - 单例
  5. vc++ List Control控件获得所有选中行的序号
  6. jquery 滚动条位置的
  7. ASP.NET Core 中文文档 第三章 原理(1)应用程序启动
  8. 数据结构(6)二叉树
  9. Elasticsearch Curator使用
  10. (转)Arcgis for js加载天地图
  11. 期权“不公平”是认识上的错误
  12. iPhone开发教程 UI基础课程(58课时)
  13. matlab之数据拟合
  14. FFmpeg源代码简单分析-通用-结构体分析-AVCodec
  15. 3.4.4 Raucous Rockers“破锣摇滚”乐队 USACO
  16. Verifying an Alien Dictionary
  17. HTML中如何使用JavaScript创建链接?
  18. Qt Design Studio 1.4正式发布
  19. eclipse:解决 The word is not correctly spelled问题
  20. 权威发布丨2020 中国开源先锋 33 人之心尖上的开源人物

热门文章

  1. 较真的来了!这篇【硬核论文】为何恺明新作MAE提供了一种理论解释和数学证明...
  2. 光影变幻:自动化所基于最优传输理论的影视换脸技术
  3. 3D视觉公开课 | TOF系统设计与分析
  4. CV Code|计算机视觉开源周报20200601期
  5. 重磅更新!YoloV4最新论文!解读yolov4框架
  6. 人工智能 | 元学习与图神经网络逻辑推导与理解
  7. 学术前沿 | DeepMind最新成果:图表示学习算法推理~46页ppt
  8. HALCON学习之旅(七)
  9. 刘光聪 | TensorFlow:揭示多语言编程的奥秘
  10. OpenCV人脸识别之二:模型训练