ホームページ > バックエンド開発 > C++ > .NET の非同期メソッドで出力パラメータを使用するにはどうすればよいですか?

.NET の非同期メソッドで出力パラメータを使用するにはどうすればよいですか?

Susan Sarandon
リリース: 2025-01-03 05:42:39
オリジナル
657 人が閲覧しました

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

非同期と出力パラメータ: ジレンマ

開発者は出力パラメータを使用して非同期メソッドを記述する必要があることがよくありますが、.NET Framework では次のような問題が発生します。この点では課題です。

問題

次のコード スニペットは問題を示しています:

public async void Method1()
{
    int op;
    int result = await GetDataTaskAsync(out op);
}
ログイン後にコピー

このコードは出力パラメーターを使用して非同期メソッドを作成しようとしていますが、そのような機能は .NET では使用できません。フレームワーク。

推論

によるとMicrosoft エンジニアの Lucian 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);
}
ログイン後にコピー

このアプローチは、メソッドから複数の値を返す方法を提供します。 out パラメーターに頼らない非同期メソッド。

以上が.NET の非同期メソッドで出力パラメータを使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート