匿名方法,Action,Func以及lambda的区别
2012-10-03 14:09
302 查看
usingSystem; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Text; usingSystem.Threading; usingSystem.Threading.Tasks; namespaceConsoleApplication1 { publicdelegateintGetSum(objectindex); classProgram { staticvoidMain(string[]args) { /* Tasktask=newTask(newAction(Test)); task.Start(); Console.Read(); */ //最初的正确方法 //Task<int>task=newTask<int>(n=>Sum((Int32)n),100); //正确的定义方法一 Task<int>task=newTask<int>(newFunc<object,int>(Sum),10); //错误的定义方法二 //Task<int>task1=newTask<int>(newFunc<inobject,outint>(Sum),20); //方法三错误 GetSumgetSum=newGetSum(Sum); Task<int>task1=newTask<int>((Func<object,int>)getSum,20); Console.WriteLine("CurrentStatus:"+task.Status); task.Start(); Console.WriteLine("CurrentStatus:"+task.Status); Console.WriteLine(task.Result); Thread.Sleep(60); Console.WriteLine("CurrentStatus:"+task.Status); Console.Read(); } privatestaticvoidTest(){ Console.WriteLine("Hello,World!"); } //正确的方法一 privatestaticintSum(objectinput) { intresult=0; for(inti=0;i<(int)input;i++) { checked { result+=i; } //result=checked(result+i); } returnresult; } //正确的方法二 privatestaticintSumSecond(intinput) { intresult=0; for(inti=0;i<(int)input;i++) { checked { result+=i; } //result=checked(result+i); } returnresult; } } }
usingSystem; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Text; usingSystem.Threading; usingSystem.Threading.Tasks; namespaceConsoleApplication1 { publicdelegateintGetSum(objectindex); classProgram { staticvoidMain(string[]args) { /* Tasktask=newTask(newAction(Test)); task.Start(); Console.Read(); */ //最初的正确方法 //Task<int>task=newTask<int>(n=>Sum((Int32)n),100);//注意这里的(Int32)强制转换 //正确的定义方法一 Task<int>task=newTask<int>(newFunc<object,int>(Sum),10); //错误的定义方法二 //Task<int>task1=newTask<int>(newFunc<inobject,outint>(Sum),20); //方法三错误 //GetSumgetSum=newGetSum(Sum); //Task<int>task1=newTask<int>((Func<object,int>)getSum,20); //方法四 Task<int>taskForth=newTask<int>(delegate(objectinput){return100;},30); Console.WriteLine("CurrentStatus:"+task.Status); task.Start(); Console.WriteLine("CurrentStatus:"+task.Status); Console.WriteLine(task.Result); Thread.Sleep(60); Console.WriteLine("CurrentStatus:"+task.Status); taskForth.Start(); Console.WriteLine(taskForth.Result); Console.Read(); } privatestaticvoidTest(){ Console.WriteLine("Hello,World!"); } //正确的方法一 privatestaticintSum(objectinput) { intresult=0; for(inti=0;i<(int)input;i++) { checked { result+=i; } //result=checked(result+i); } returnresult; } //正确的方法二 privatestaticintSumSecond(intinput) { intresult=0; for(inti=0;i<(int)input;i++) { checked { result+=i; } //result=checked(result+i); } returnresult; } } }
相关文章推荐
- 为LINQ服务的C#新特性总结篇---扩展方法,匿名委托,lambda表达式,Action委托,Func委托,Linq中的order by,top和sum函数
- Func与Action, delegate, event, var, dynamic, 匿名方法,lambda, 大量的关键都使用相同功能,大大增加C#复杂性
- Delegate,Action,Func,匿名方法,匿名委托,事件
- 温故而知新:Delegate,Action,Func,匿名方法,匿名委托,事件
- ActionContext和ServletActionContext区别以及action访问servlet API的三种方法
- delegate,event, lambda,Func,Action以及Predicate
- Delegate,Action,Func,匿名方法,匿名委托,事件
- c# 中的委托以及匿名方法lambda
- C#中分别对委托、匿名方法、Lambda表达式、Lambda表达式树以及反射执行同一方法的过程进行比较。
- 匿名方法、Lambda表达式、Func<>委托
- Delegate,Action,Func,匿名方法,匿名委托,事件 (转载)
- ActionContext和ServletActionContext区别以及action访问servlet API的三种方法
- .NET Framework System.Array.Sort 数组类,加深对 IComparer、IComparable 以及泛型委托、匿名方法、Lambda 表达式的理解
- 温故而知新:Delegate,Action,Func,匿名方法,匿名委托,事件
- 温故而知新:Delegate,Action,Func,匿名方法,匿名委托,事件
- delegate,event, lambda,Func,Action以及Predicate
- 温故而知新:Delegate,Action,Func,匿名方法,匿名委托,事件
- Delegate,Action,Func,匿名方法,匿名委托,事件
- Delegate,Action,Func,匿名方法,匿名委托,事件
- Delegate,Action,Func,匿名方法,匿名委托,事件