Func和Action的介绍及其用法
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的介绍及其用法相关推荐
- 第十节:委托和事件(2)(泛型委托、Func和Action、事件及与委托的比较)
一. 泛型委托 所谓的泛型委托,即自定义委托的参数可以用泛型约束,同时内置委托Func和Action本身就是泛型委托. 将上一个章节中的Calculator类中的方法用自定义泛型委托重新实现一下. 1 ...
- Func vs. Action vs. Predicate [复制]
本文翻译自:Func vs. Action vs. Predicate [duplicate] This question already has an answer here: 这个问题在这里已有答 ...
- Java 动态代理介绍及用法
Java 动态代理介绍及用法 一,静态代理模式的特点 在之前的文章中 java代理模式 已经介绍里java里的(静态)代理模式 下面是上文静态代理类的例子: public class ProxyBea ...
- Java中BigDecimal类介绍及用法
Java中BigDecimal类介绍及用法 Java中提供了大数字(超过16位有效位)的操作类,即 java.math.BinInteger 类和 java.math.BigDecimal 类,用于高 ...
- chrome介绍与用法
chrome介绍与用法 chrome介绍与用法 1. 认识devTools Elements 面板 console控制面板 Sources 资源面板 chrome介绍与用法 1. 认识devTools ...
- at指令 meid_AT指令介绍及用法,AT 指令集合
AT指令介绍及用法,AT 指令集合 AT指令在当代手机通讯中起着重要的作用,能够通过AT指令控制手机的许多行为,包括拨叫号码.按键控制.传真.GPRS等.西门子M55手机为我提供了很多的AT指令,网络 ...
- C#中File和FileStream的简单介绍和用法
前言 在近期的工作过程中发现自己的基础比较薄弱,所以最近在恶补基础知识.下面就对我所学习的File类和FileStream进行简单的总结. 1.首先先介绍File类和FileStream文件流 1.1 ...
- c语言isnumber函数用法,科技教程:ISNUMBER函数介绍及用法
如今越来越多的小伙伴对于ISNUMBER函数介绍及用法这方面的问题开始感兴趣,看似平静的每一天,在每个人身上都在发生着各种各样的故事,因为大家现在都是想要了解到此类的信息,那么既然现在大家都想要知道I ...
- TS简单介绍以及用法
TS简单介绍以及用法 一.什么是TS TS是TypeScript的缩写,是JavaScript的超集 (JS有的TS都有),也可以说TS是 type + js,加了一个类型.比如:JS:let a = ...
最新文章
- 【论文速读】基于投影方法的激光雷达点云处理比较
- Java多线程之线程间协作 notify与wait的使用
- 《Cisco QoS认证考试指南(第2版)》——1.1节“我已经知道了吗?”测试
- Spring 一二事(4) - 单例
- vc++ List Control控件获得所有选中行的序号
- jquery 滚动条位置的
- ASP.NET Core 中文文档 第三章 原理(1)应用程序启动
- 数据结构(6)二叉树
- Elasticsearch Curator使用
- (转)Arcgis for js加载天地图
- 期权“不公平”是认识上的错误
- iPhone开发教程 UI基础课程(58课时)
- matlab之数据拟合
- FFmpeg源代码简单分析-通用-结构体分析-AVCodec
- 3.4.4 Raucous Rockers“破锣摇滚”乐队 USACO
- Verifying an Alien Dictionary
- HTML中如何使用JavaScript创建链接?
- Qt Design Studio 1.4正式发布
- eclipse:解决 The word is not correctly spelled问题
- 权威发布丨2020 中国开源先锋 33 人之心尖上的开源人物
热门文章
- 较真的来了!这篇【硬核论文】为何恺明新作MAE提供了一种理论解释和数学证明...
- 光影变幻:自动化所基于最优传输理论的影视换脸技术
- 3D视觉公开课 | TOF系统设计与分析
- CV Code|计算机视觉开源周报20200601期
- 重磅更新!YoloV4最新论文!解读yolov4框架
- 人工智能 | 元学习与图神经网络逻辑推导与理解
- 学术前沿 | DeepMind最新成果:图表示学习算法推理~46页ppt
- HALCON学习之旅(七)
- 刘光聪 | TensorFlow:揭示多语言编程的奥秘
- OpenCV人脸识别之二:模型训练