为什么返回 await Task.FromResult(true); 而不是只返回true?

And*_*ent 1 c# async-await

当您使用 VS2017 创建 Xamarin Forms Master-Detail 示例时,您将获得一个 MockDataStore 类,该类使用以下方法生成

    public async Task<bool> DeleteItemAsync(string id)
    {
        var _item = items.Where((Item arg) => arg.Id == id).FirstOrDefault();
        items.Remove(_item);

        return await Task.FromResult(true);
    }
Run Code Online (Sandbox Code Playgroud)

这是一个微软的例子感觉很幼稚,因此它一定是对的

我不明白为什么这些方法不只是return true而且我还没有看到这个习语解释。我在这里遗漏了什么微妙的东西,或者这是一个应该从模板中清除的历史性解决方法?

Evk*_*Evk 5

我想这背后的原因是为了防止“异步方法缺少等待运算符”编译器警告。这个自动生成代码的作者想要标记 function async,因为当你实现真正的功能时,无论如何你都会这样做。所以为了防止编译器警告(没有自动生成的代码应该生成编译器警告)你需要等待一些东西,并且在他们的代码中没有什么可以等待,所以他们选择了 await Task.FromResult

当然,当您自己编写代码而不是自动生成以供将来编辑时 - 您不需要这样做。