我有以下异步方法:
public async Task<Result> Create(ModelStateDictionary modelState, TCreateViewModel postedModel)
{
var result = new Result();
if (! modelState.IsValid)
{
result.CopyErrorsFromModelState(modelState);
return result;
}
// never reached if modelState is invalid
var attemptCreateResult = await AttemptCreate(dataModel);
result.MergeResult(attemptCreateResult);
return result;
}
说我把它改成了下面的。 (我知道它有点愚蠢,但它只是为了证明。)
public async Task<Result> Create(ModelStateDictionary modelState, TCreateViewModel postedModel)
{
var result = new Result();
if (! modelState.IsValid)
{
result.CopyErrorsFromModelState(modelState);
}
return await Task.FromResult(result);
}
如果ModelState
无效,则会遵循完全相同的代码路径。
然而,首先,我可以直接返回result
。在第二部分,我将被要求将result
包裹在Task.FromResult()
中。
有人可以向我解释为什么会这样吗?
注意:我真的很难将这个问题弄清楚,并且不确定我是否已经成功。我欢迎任何修改以澄清它。谢谢。