【发布时间】:2016-10-05 10:29:44
【问题描述】:
我从D4()返回什么?
async static Task D4()
{
Console.Write("Enter the divisor: ");
var n = int.Parse(Console.ReadLine());
Console.WriteLine((24 / n).ToString());
// NONE OF THESE WORK
// THE COMPILER COMPLAINS WITH AN ERROR THAT SAYS:
// Since 'Program.D4()' is an async method that returns 'Task',
// a return keyword must not be followed by an object expression.
// Did you intend to return 'Task<T>'?
// return new TaskCompletionSource<object>().Task;
// return Task.FromResult<object>(null);
// return Task.FromResult<bool>(false);
// return Task.FromResult(0);
}
我早些时候问过something similar,它可能在我当时的情况下有效,但我现在不记得当时的情况了。此外,this thread 似乎暗示了我正在尝试的同样事情。我不确定为什么它在我的情况下不起作用。
更新
为了完整起见,这里是相关代码的全部内容。
async static Task A4() { await B4(); }
async static Task B4() { await C4(); }
async static Task C4() { await D4(); }
async static Task D4()
{
Console.Write("Enter the divisor: ");
var n = int.Parse(Console.ReadLine());
Console.WriteLine((24 / n).ToString());
// return new TaskCompletionSource<object>().Task;
// return Task.FromResult<object>(null);
// return Task.FromResult<bool>(false);
// return Task.FromResult(0);
}
【问题讨论】:
-
没什么...这应该可以...
-
您不会返回任何东西。将其视为
void方法。 -
在完全不考虑让它异步之前,首先要确定这个方法做什么。哪个是什么?在一个完全非异步的世界中,这个方法会返回任何东西吗?
-
@WaterCoolrv2: 所以......如果这个方法在非异步世界中不会返回任何东西,为什么它试图在异步世界中返回一些东西?
async Task方法只需要在内部等待一些东西。 -
@David:它实际上没有有等待任何东西......但如果没有,你会收到警告。
标签: c# .net asynchronous async-await task-parallel-library