您的位置:首页 > 其它

匿名方法,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;
}
}
}





                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐