async
metode berbeda dari metode normal. Apa pun yang Anda kembali dari async
metode terbungkus a Task
.
Jika Anda mengembalikan tidak ada nilai (batal) itu akan dibungkus Task
, Jika Anda mengembalikannya int
akan dibungkus Task<int>
dan sebagainya.
Jika metode async Anda perlu kembali, int
Anda akan menandai jenis pengembalian metode sebagai Task<int>
dan Anda akan kembali polos int
bukan Task<int>
. Compiler akan mengonversikan int
ke 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 await
pernyataan tidak async
.