首页 > 后端开发 > C++ > 如何在 .NET 中将输出参数与异步方法一起使用?

如何在 .NET 中将输出参数与异步方法一起使用?

Susan Sarandon
发布: 2025-01-03 05:42:39
原创
663 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板