delegate,event, lambda,Func,Action以及Predicate
2011-06-24 09:44
453 查看
1. delegate 委托
可以理解为cxx 语言中的函数指针,标示了方法调用的回调函数的规范。强类型,便于编译时检查是它的最大优点,从此可以和void * 说再见了。
2. event 事件
用以delegate委托声明事件,标示响应该事件的回调函数必须符合其声明委托的定义
3. lambda 表达式
在.net世界中表现为匿名委托,之前又要提到匿名方法(函数)
4. Func 有返回值的泛型委托
有多种方法重载,比如
Func<int> 表示无参,返回值为int的委托
Func<object,string,int> 表示传入参数为object, string 返回值为int的委托
即
Func<int> = delegate int Delegate();
Func<object,string,int> = delegate int Delegate(object, string);
5. Action 无返回值的泛型委托
Action 表示无参,无返回值的委托
Action<int,string> 表示有传入参数int,string无返回值的委托
Action act = delegate void Delegate();
Action<int,string> act = delegate void (int, string)
6. Predicate 返回bool型的谓语泛型委托
Predicate<int> 表示传入参数为int 返回bool的委托
Predicate<int> pre = delegate bool (int);
譬如这样使用 Predicate<int[]> pre = i => i.Length == 10;
用来判断传入的整形数组个数是否为10
http://www.cnblogs.com/tianzhiliang/archive/2011/01/06/1927803.html
可以理解为cxx 语言中的函数指针,标示了方法调用的回调函数的规范。强类型,便于编译时检查是它的最大优点,从此可以和void * 说再见了。
2. event 事件
用以delegate委托声明事件,标示响应该事件的回调函数必须符合其声明委托的定义
3. lambda 表达式
在.net世界中表现为匿名委托,之前又要提到匿名方法(函数)
01 | public class Test{ |
02 | public void delegate Close(); //声明一个无参无返回值的委托 |
03 | public event Close CloseEvent; //声明一个Close对应事件 |
04 | } |
05 | static void Main() //模拟一个控制台 |
06 | { |
07 | Test test = new Test(); |
08 | test.CloseEvent +=TestClose; //使用委托回调函数 |
09 | test.CloseEvent += delegate { Console.Write( "test" );} //使用匿名方法 |
10 | test.CloseEvent +=()=> Console.Write( "test" ); //使用匿名委托 ,lambda表达式 |
11 | } |
12 | static void TestClose() |
13 | { |
14 | Console.Write( "test" ); |
15 | } |
有多种方法重载,比如
Func<int> 表示无参,返回值为int的委托
Func<object,string,int> 表示传入参数为object, string 返回值为int的委托
即
Func<int> = delegate int Delegate();
Func<object,string,int> = delegate int Delegate(object, string);
5. Action 无返回值的泛型委托
Action 表示无参,无返回值的委托
Action<int,string> 表示有传入参数int,string无返回值的委托
Action act = delegate void Delegate();
Action<int,string> act = delegate void (int, string)
6. Predicate 返回bool型的谓语泛型委托
Predicate<int> 表示传入参数为int 返回bool的委托
Predicate<int> pre = delegate bool (int);
譬如这样使用 Predicate<int[]> pre = i => i.Length == 10;
用来判断传入的整形数组个数是否为10
http://www.cnblogs.com/tianzhiliang/archive/2011/01/06/1927803.html
相关文章推荐
- delegate,event, lambda,Func,Action以及Predicate
- delegate,event, lambda,Func,Action以及Predicate
- delegate,event, lambda,Func,Action以及Predicate
- delegate,event, lambda,Func,Action以及Predicate
- delegate,event, lambda,Func,Action以及Predicate
- delegate event lambda Function Action Predicate
- Untiy3d-c#搞定函数之delegate,event, lambda,Func,Action
- C#的delegate/event/Action/Func/Predicate关键字
- Func与Action, delegate, event, var, dynamic, 匿名方法,lambda, 大量的关键都使用相同功能,大大增加C#复杂性
- C#委托的介绍(delegate、Action、Func、predicate)(转)
- Delegate Action<T in> Func<T in,out Tresult> Predicate<T>
- C#委托的介绍(delegate、Action、Func、predicate)
- C#委托介绍(delegate、Action、Func、predicate)(一)
- C#委托的介绍(delegate、Action、Func、predicate)【转】
- C#委托的介绍(delegate、Action、Func、predicate)
- C#委托的介绍(delegate、Action、Func、predicate)
- C#委托的介绍(delegate、Action、Func、predicate)
- Delegate、Predicate、Action和Func
- C#委托的介绍(delegate、Action、Func、predicate)
- C#委托的介绍(delegate、Action、Func、predicate)