gpt4 book ai didi

c# - 在异步任务中引用

转载 作者:太空狗 更新时间:2023-10-30 00:00:03 27 4
gpt4 key购买 nike

如何将引用作为参数传递给 Windows 应用商店应用程序中的异步方法?
我正在寻找这样的东西:

var a = DoThis(ref obj.value);

public async Task DoThis(ref int value)
{
value = 10;
}

但是错误:

Async methods cannot have ref or out parameters

还有别的办法吗?

注意:
我需要准确传递obj.value。此方法将由不同类型的对象、相同类型的对象、一个对象使用,但我将传递 obj.val_1、obj.val_2 或 obj.val_10。所有值都将是相同类型(对于前字符串)

最佳答案

如果您不关心对象的一些开销和可能延长的生命周期,您可以通过将 setter 和 getter 方法传递给函数来模拟 ref 行为,如下所示:

public async Task DoStuff(Func<int> getter, Action<int> setter)
{
var value1 = getter();
await DoSomeOtherAsyncStuff();
setter(value1 * value1);
}

然后这样调用它:

await DoStuff(() => obj.Value, x => obj.Value = x);

关于c# - 在异步任务中引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16664823/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com