为什么这是错的?(C#Task ContinueWith)

Dot*_*Dot 1 c# multithreading task

当我写下面的代码时:

 Task<string> task = Task.Factory.StartNew<string>(() => "first task")
         .ContinueWith(t =>
                 {
                     Console.WriteLine(t.Result);
                     Console.WriteLine("second task");
                 });
Run Code Online (Sandbox Code Playgroud)

那是错的!

然后我把它改成这个:

 var  task = Task.Factory.StartNew<string>(() => "first task")
         .ContinueWith(t =>
                 {
                     Console.WriteLine(t.Result);
                     Console.WriteLine("second task");
                 });
Run Code Online (Sandbox Code Playgroud)

一切都好!

为什么?

"任务任务"和"var任务"之间有什么不同?

ken*_*n2k 6

你的代码行返回一个Task而不是一个Task<string>对象,因为你写的ContinueWith不是ContinueWith<string>.

一个可以在将来帮助您的提示:当您var在变量声明中替换类型时,可以将鼠标移到varVisual Studio中的关键字上,弹出窗口将显示代码中var 隐藏的实际类型.