Func<>与Action

it2026-08-22  4

Action 与 Func是.NET类库中增加的内置委托,以便更加简洁方便的使用委托。最初使用委托时,均需要先定义委托类型,然后定义一个符合委托类型签名的函数,在调用前,需声明并创建委托对象,将指定函数与委托进行关联。如例1:public delegate int Math(int param1,int param2); 1.定义委托类型Public int Add(int param1,int param2)//定义同签名函数{Return param1+param2;}Math math;//声明委托math=new Math(Add);创建委托对象,与指定进行关联math(3,4);//调用委托函数

-----------------------------------------------------------------------------------------------------------------

Action和Func,简化了这些不必要的操作。内置委托类型,顾名思义Action和Func本身就是已经定义好的委托类型。两种委托类型的区别在于:Action委托签名不提供返回类型,而Func提供返回类型。

Action委托具有Action<T>、Action<T1,T2>、Action<T1,T2,T3>……Action<T1,……T16>多达16个的重载,其中传入参数均采用泛型中的类型参数T,涵盖了几乎所有可能存在的无返回值的委托类型。

Func则具有Func<TResult>、Func<T,Tresult>……Func<T1,T2,T3……,Tresult>17种类型重载,T1……T16为出入参数,Tresult为返回类型

 

Func<int,int,int> math=Add;//指定委托对象并关联函数math(3,4);//调用委托函数

 

既然是委托类型,也同样可以与匿名函数、或者采用Lambda表达式结合使用:匿名函数:Func<int,int,int> math=delegate(int param1,int param2){Return param1+param2;}Lambda:Func<int,int,int> math=(param1,param2)=>{Return param1+param2;}Action的使用如同上面Func的使用一样,只是缺少了返回类型,直接调用委托函数。Public void Add(int param1,int param2){MessageBox.show((param1+param2).ToString());}遇到此类的委托函数调用,那我们就可以直接用Action了:Action<int,int> math=Add;math(3,4);

原文链家:http://www.cnblogs.com/ultimateWorld/p/5608122.html

转载于:https://www.cnblogs.com/ZkbFighting/p/7722595.html

最新回复(0)