首頁 >後端開發 >C++ >如何在 .NET 中將輸出參數與非同步方法一起使用?

如何在 .NET 中將輸出參數與非同步方法一起使用?

Susan Sarandon
Susan Sarandon原創
2025-01-03 05:42:39665瀏覽

How Can I Use Output Parameters with Asynchronous Methods in .NET?

非同步和輸出參數:一個困境

開發人員經常遇到需要編寫帶有輸出參數的非同步方法,但.NET 框架提出了在這方面是一個挑戰。

問題

以下程式碼片段說明了問題:

public async void Method1()
{
    int op;
    int result = await GetDataTaskAsync(out op);
}

此程式碼嘗試建立具有輸出參數的非同步方法,但此類功能在.NET 中不可用框架。

推理

根據盧西安Microsoft 工程師 Wischik 表示,這種限制源自於 CLR 中非同步方法的實作方式。它們被編譯器轉換為狀態機對象,而狀態機物件缺乏儲存輸出或引用參數位址的安全機制。

解決方法

常見的解決方法是讓非同步方法傳回一個元組:

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);
}

這種方法提供了一種從非同步方法傳回多個值的方法,而無需求助於輸出參數。

以上是如何在 .NET 中將輸出參數與非同步方法一起使用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn