asyncphương pháp khác với phương pháp bình thường. Bất cứ điều gì bạn trở về từ asynccác phương thức đều được gói trong mộtTask .
Nếu bạn trả lại không có giá trị (void), nó sẽ được bọc lại Task, Nếu bạn trả lại, intnó sẽ được bọc Task<int>và cứ thế.
Nếu phương thức không đồng bộ của bạn cần trả về, intbạn sẽ đánh dấu loại trả về của phương thức Task<int>và bạn sẽ trả về đơn giản intkhông phải là Task<int>. Trình biên dịch sẽ chuyển đổi intthành Task<int>cho bạn.
private async Task<int> MethodName()
{
    await SomethingAsync();
    return 42;//Note we return int not Task<int> and that compiles
}
Sameway, Khi bạn trả về kiểu trả về Task<object>của phương thức của bạn sẽ làTask<Task<object>>
public async Task<Task<object>> MethodName()
{
     return Task.FromResult<object>(null);//This will compile
}
Vì phương thức của bạn đang trả về Task, nên nó không trả về bất kỳ giá trị nào. Nếu không nó sẽ không biên dịch.
public async Task MethodName()
{
     return;//This should work but return is redundant and also method is useless.
}
Hãy nhớ rằng phương pháp async mà không có awaitcâu lệnh là không async.