jim*_*zer 4 c# asynchronous async-await windows-store-apps
如何将引用作为参数传递给Windows Store App中的Async方法?
我正在寻找这样的东西:
var a = DoThis(ref obj.value);
public async Task DoThis(ref int value)
{
value = 10;
}
Run Code Online (Sandbox Code Playgroud)
但是错误:
异步方法不能有ref或out参数
还有别的办法吗?
注意:
我需要传递完全obj.value.此方法将由不同类型的对象,相同类型的对象,一个对象使用,但我将传递obj.val_1,obj.val_2或obj.val_10.所有值都是相同的类型(对于ex string)
如果你不关心对象的一点开销和可能延长的生命周期,你可以通过将setter和getter方法传递给函数来模拟ref行为,如下所示:
public async Task DoStuff(Func<int> getter, Action<int> setter)
{
var value1 = getter();
await DoSomeOtherAsyncStuff();
setter(value1 * value1);
}
Run Code Online (Sandbox Code Playgroud)
并称之为:
await DoStuff(() => obj.Value, x => obj.Value = x);
Run Code Online (Sandbox Code Playgroud)
您可以直接传递对象本身并在方法内设置相应属性的值:
var a = DoThis(obj);
public async Task DoThis(SomeObject o)
{
o.value = 10;
}
Run Code Online (Sandbox Code Playgroud)
如果你没有这样的对象,只需编写一个并使用async方法将该对象作为参数:
public class SomeObject
{
public int Value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7515 次 |
最近记录: |