winform总结2> Action<> ,Action,func<>,委托相关的理解
1,他们是什么:
Action 封装一个方法,该方法不具有参数并且不返回值。
Action<> 封装一个方法,该方法具有最多16个参数并且不返回值。
func<> 封装一个具有一个参数并返回 TResult 参数指定的类型值的方法。最多可以传递16个参数,并且可以有返回值,最后一个参数是返回值。
目前了解到的好像也只有委托是需要传递一个方法的,既然这里的三个方式都是封装一个方法,那么这种写法就肯定是可以用到给委托传递参数一类型的任务时用,想想刚开始学习委托的时候,要给他传递一个方法,还要再写一个方法去传递,再把方法名传递过去,代码组织能力差点的可能写出来的云里雾里,会很混乱。那么有这些结构做一个中间层,所有问题都得到很好的解决,结构也不乱了,学习成本也低了。那么他们究竟是什么,我仔细思考过这个问题,现在我的理解就是他们都是委托的一种表达方式,就像事件一样,这样理解所有的疑惑就都解开了。可以传递方法,可以返回值也可以不返回值 这可不就是委托嘛.
2.怎么用:
Action<string> astr = new Action<string>((x) =>
{
Console.WriteLine("Action<>" + x);
});
astr.Invoke("Action<>");
Action a = new Action(() =>
{
Console.WriteLine("Action");
});
a.Invoke();
Func<string, string> func = new Func<string, string>((x) =>
{
return x;
});
string funcTest = func.Invoke("");
Console.WriteLine("Func<>" + funcTest);
3,用在什么地方:
通过对这些东西的了解最直接的结果就是终于对一些方法的参数不再迷茫了. 最典型 lambda表达式中的那种写法,实际上就是Func<>这个东西,看方法签名一目了然。然后就是可以将Func<>作为方法的参数,这样的话,就可以把被调用方的具体的一部分操作权交给调用方来执行。
public static IEnumerable<TSource> Where<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);像这样的,知道里边的原理,再使用,就不会迷糊,很清晰的感觉。
winform总结2> Action<> ,Action,func<>,委托相关的理解的更多相关文章
- Action<>和Func<> 委托【代理】
C#中的Action<>和Func<> 其实他们两个都是委托[代理]的简写形式. 一.[action<>]指定那些只有输入参数,没有返回值的委托 Delegate的 ...
- Aap.Net中的Action和Func委托
前言 最近在阅读某开源框架源码的时候,发现作者在其中运用了很多Action委托和Func委托,虽然我之前在项目中也有一些对委托的实操,但还是免不了长时间的不用,当初消化的一些委托基础都遗忘了...索性 ...
- C#扫盲篇(三):Action和Func委托--实话实说
一.基础定义 老王想找老张的老婆出去耍,但是一看,老张还在厨房煮饭.于是老王就对老张隔壁的淑芬说:"等下老张吃完饭出去喝茶,你就把前门晒的苞谷收了,老张从左门出,你就收右边的苞谷,我就知道从 ...
- VS2012 Unit Test(Void, Action, Func) —— 对无返回值、使用Action或Func作为参数、多重载的方法进行单元测试
[提示] 1. 阅读文本前希望您具备如下知识:了解单元测试,了解Dynamic,熟悉泛型(协变与逆变)和Lambda,熟悉.NET Framework提供的 Action与Func委托.2.如果您对单 ...
- 对无返回值、使用Action或Func作为参数、多重载的方法进行单元测试
VS2012 Unit Test(Void, Action, Func) —— 对无返回值.使用Action或Func作为参数.多重载的方法进行单元测试 [提示] 1. 阅读文本前希望您具备如下知识: ...
- Action 和 Func 的用法以及区别
Action 无返回值 Func 有返回值,且最后一个参数为返回值 Action用法 public static void test(string s) { Console.WriteLine(&qu ...
- C#系统委托之Action And Func
Action Action<T> Func Func<T> Action:封装一个方法,该方法不具有参数并且不返回值 public delegate void Action() ...
- C#中常见的委托(Func委托、Action委托、Predicate委托)
今天我要说的是C#中的三种委托方式:Func委托,Action委托,Predicate委托以及这三种委托的常见使用场景. Func,Action,Predicate全面解析 首先来说明Func委托,通 ...
- C#中匿名函数、委托delegate和Action、Func、Expression、还有Lambda的关系和区别
以前一直迷迷糊糊的,现在总算搞明白. Lambda表达式 Lamda表达式基本写法是()=>{ };Lambda和方法一样都可以传入参数和拥有返回值.(int x)=>{return x; ...
随机推荐
- Angular的自定义指令以及实例
本文章已收录于: AngularJS知识库 分类: javascript(55) http://www.cnblogs.com/xiaoxie53/p/5058198.html 前面的文章介 ...
- SAP(ABAP) 显示等待图标的FM:SAPGUI_PROGRESS_INDICATOR-SAP进度条
在执行一些数据量大的报表时候,为了防止用户认为是死机,可以再程序中添加正在处理的图标,可以CALL一个 FM来实现. CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' ...
- Struts2初始(一)
1.过滤器:org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter位置:在struts2的核心包struts2-co ...
- 实用的圆形图片控件ImageView
1.用法直接在布局中引用即可 import android.content.Context;import android.content.res.TypedArray;import android.g ...
- 使用Java实现单线程模式
我们都知道单例模式,有很多种实现方法.今天我们实现一个单线程实例模式,也就是说只能实例化该类的一个线程来运行,不允许有该类的多个线程实例存在.直接上代码: public class Singleton ...
- monkeyrunner之控件ID不存在或重复
我们在用monkeyrunner进行Android自动化时,通过获取坐标点或控件ID进行一系列操作.由于使用坐标点时,屏幕分辨率一旦更改,则代码中用到坐标的地方都要修改,这样导致代码的复用率较低.因此 ...
- [转]OAuth 2.0 - Authorization Code授权方式详解
本文转自:http://www.cnblogs.com/highend/archive/2012/07/06/oautn2_authorization_code.html I:OAuth 2.0 开发 ...
- Jmeter+TCP\Scoket(8583)报文压力测试
Jmeter一般被用来测试HTTP协议,我第一次拿来测试socket协议,pos机传输报文为8583,协议属于socket,也是TCP协议的一种,网上有LR怎么测试8583报文,我就研究了一下怎么用J ...
- Java程序设计之Constructor
插入段代码,下次回忆吧. 先新建一个Person类,代码如下: public class Person { private String name ; private int age; public ...
- Maven :No goals have been specified for this build
Maven报错 报错信息如下:No goals have been specified for this build 解决办法:在<build></build>标签中增加 & ...