每天学习一点.net(5) 利用匿名方法Lambda表达式(=>)实现委托
2013-06-17 22:20
711 查看
Lambda表达式的语法格式为: 参数列 => 语句或语句块
它是一个匿名函数。它包含表达式和语句,常用于创建委托或表达式目录树类型
通常Lambda表达式的参数都是可变类型的,由编译器自动确定它的具体类型。但有时编译器难于或无法推断输入类型,就需要为参数显示指定类型,既在参数之前添加参数类型。如下所示的Lambda表达式包括连个参数x和s。其中x是int类型,而s则是string类型。
(int x, string s) =>s.Length > x
当Lanbda表达式没有参数时,需要使用空的括号表示,如下所示。其中,“()”表示没有参数,而Amethod()是一个具体的方法,该方法的返回值就是Lambda表达式的结果。
() => AMethod()
示例:
它是一个匿名函数。它包含表达式和语句,常用于创建委托或表达式目录树类型
通常Lambda表达式的参数都是可变类型的,由编译器自动确定它的具体类型。但有时编译器难于或无法推断输入类型,就需要为参数显示指定类型,既在参数之前添加参数类型。如下所示的Lambda表达式包括连个参数x和s。其中x是int类型,而s则是string类型。
(int x, string s) =>s.Length > x
当Lanbda表达式没有参数时,需要使用空的括号表示,如下所示。其中,“()”表示没有参数,而Amethod()是一个具体的方法,该方法的返回值就是Lambda表达式的结果。
() => AMethod()
示例:
using System; using System.Threading; public static class CancellationDemo { public static void Main() { CancellationTokenSource cs = new CancellationTokenSource(); ThreadPool.QueueUserWorkItem(o => Count(cs.Token, 1000)); Console.WriteLine("press <Enter> key to stop he child thread"); Console.ReadLine(); cs.Cancel(); Console.ReadLine(); } private static void Count(CancellationToken token, int countTo) { for (int count = 0; count <= countTo; count++) { if (token.IsCancellationRequested) { Console.WriteLine("it is done by the main thread"); break; } Console.WriteLine(count); Thread.Sleep(200); } Console.WriteLine("it is done"); } }ThreadPool.QueueUserWorkItem 是实现将一个异步的、计算限制的操作放到线程池的队列中。
ThreadPool.QueueUserWorkItem(Waitcallback Callback,Object state) 在ThreadPool.QueueUserWorkItem(o => Count(cs.Token, 1000)) 中,=>作为了一个匿名方法传递给QueueUserWorkItem o为Object o,表示传入参数。
相关文章推荐
- 每天学习一点.net(5) 利用匿名方法Lambda表达式(=>)实现委托
- C# 委托的发展史: .Net 1.x 委托 =>.Net 2.x 匿名方法 => .Net 3.0/3.5 Lambda 表达式
- DotNet 3.0+ 新特性学习 之 匿名方法&Lambda表达式(Anonymous Method&Lambda Expression)
- 第八章(3)-委托的匿名方法与Lambda表达式-学习笔记
- .NET Framework System.Array.Sort 数组类,加深对 IComparer、IComparable 以及泛型委托、匿名方法、Lambda 表达式的理解
- 匿名方法、Lambda表达式、Func<>委托
- C# 新委托使用方法 Lambda表达式,运算符 =>
- 十二、C# 委托与Lambda表达式(匿名方法的另一种写法)
- C#中分别对委托、匿名方法、Lambda表达式、Lambda表达式树以及反射执行同一方法的过程进行比较。
- C# 从CIL代码了解委托,匿名方法,Lambda 表达式和闭包本质
- 委托、匿名方法和 Lambda 表达式
- 委托 匿名方法 Lambda表达式 总结(yuananl)
- 委托、匿名方法、Lambda表达式的演进
- 利用Lambda表达式、扩展方法以及泛型来实现一个另类的AOP
- Func<T, ..., TResult> 委托 实现方法嵌套
- 委托、匿名方法、Lambda表达式的演进
- 从委托到匿名方法,再到Lambda表达式
- 委托、匿名方法、Lambda表达式的演进
- Lambda表达式_匿名方法_委托
- C#学习之初步理解委托、事件、匿名方法和Lambda