Asynchrony and Out Parameter: A Dilema
Pemaju sering menghadapi keperluan untuk menulis kaedah tak segerak dengan parameter output, tetapi rangka kerja .NET menimbulkan cabaran dalam hal ini.
The Isu
Coretan kod berikut menggambarkan masalah:
public async void Method1() { int op; int result = await GetDataTaskAsync(out op); }
Kod ini cuba mencipta kaedah async dengan parameter output, tetapi ciri sedemikian tidak tersedia dalam .NET Rangka Kerja.
The Penaakulan
Menurut Lucian Wischik, seorang jurutera Microsoft, had ini berpunca daripada cara kaedah async dilaksanakan dalam CLR. Ia diubah oleh pengkompil menjadi objek mesin keadaan, yang tidak mempunyai mekanisme selamat untuk menyimpan alamat keluar atau parameter rujukan.
Penyelesaian
Penyelesaian biasa ialah dengan kaedah async mengembalikan Tuple:
public async Task Method1() { var tuple = await GetDataTaskAsync(); int op = tuple.Item1; int result = tuple.Item2; } public async Task<Tuple<int, int>> GetDataTaskAsync() { //... return new Tuple<int, int>(1, 2); }
Pendekatan ini menyediakan cara untuk menghantar berbilang nilai kembali daripada kaedah async tanpa menggunakan parameter keluar.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Parameter Output dengan Kaedah Asynchronous dalam .NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!