1

次のコードを書くと:

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

それは間違いです!

次に、これを次のように変更します。

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

その後、すべてがOKです!

なんで?

「Task task」と「var task」の違いは何ですか?</p>

4

2 に答える 2

6

あなたが書いたので、あなたのコード行はオブジェクトでTaskはなく を返します。Task<string>ContinueWithContinueWith<string>

将来役立つヒント:var変数宣言で型を置き換える場合、Visual Studio でマウスをキーワードの上に移動すると、コード内に隠さvarれている実際の型がポップアップに表示されます。var

于 2012-07-18T14:55:57.870 に答える
2

task元のタスクではなく継続への参照です (元のタスクへの参照tは継続として渡されます)。

継続は何も返さないため、Task<string>. 明らかにvarこれを処理するため、2番目の例は機能し、最初の例は機能しません。

于 2012-07-18T14:56:15.417 に答える