在.NET核心Controller
可以返回Ok()
作爲IActionResult
。但我不明白怎麼還可以返回Task<IActionResult>
。如何確定()是兩個任務<IActionResult>和IActionResult?
實施例:
public class FooController : Controller
{
[HttpGet]
public async Task<IActionResult> OkResultAsync()
{
// This is ok. But I don't get why since OkResult != Task<IActionResult>
OkResult result = Ok();
return result;
}
[HttpGet]
public IActionResult OkResult()
{
// This is ok, and it seems logical since OkResult implements IActionResult.
OkResult result = Ok();
return result;
}
[HttpGet]
public FooResult Bar()
{
// This is ok.
return new FooResult();
}
[HttpGet]
public async Task<FooResult> BarAsync()
{
// This is not ok since FooResult != Task<FooResult>
return new FooResult();
}
}
Ok()
返回OkResult
,這又實現IActionResult
。 .NET是如何知道如何處理它(無等待),如果該方法簽名返回一個Task<IActionResult>
?
'async-await'是編譯器功能,它爲異步執行生成代碼。所以,如果你標記方法'async'編譯器將包裹返回值'任務' –
Fabio