asyncmetode berbeda dari metode normal. Apa pun yang Anda kembali dari asyncmetode terbungkus a Task.
Jika Anda mengembalikan tidak ada nilai (batal) itu akan dibungkus Task, Jika Anda mengembalikannya intakan dibungkus Task<int>dan sebagainya.
Jika metode async Anda perlu kembali, intAnda akan menandai jenis pengembalian metode sebagai Task<int>dan Anda akan kembali polos intbukan Task<int>. Compiler akan mengonversikan intke Task<int>untuk Anda.
private async Task<int> MethodName()
{
await SomethingAsync();
return 42;//Note we return int not Task<int> and that compiles
}
Sameway, Ketika Anda kembali Task<object>, tipe pengembalian metode Anda seharusnyaTask<Task<object>>
public async Task<Task<object>> MethodName()
{
return Task.FromResult<object>(null);//This will compile
}
Karena metode Anda kembali Task, seharusnya tidak mengembalikan nilai apa pun. Kalau tidak, itu tidak akan dikompilasi.
public async Task MethodName()
{
return;//This should work but return is redundant and also method is useless.
}
Perlu diingat bahwa metode async tanpa awaitpernyataan tidak async.