gpt4 book ai didi

c# - 更新匿名方法中的 ref 参数

转载 作者:太空狗 更新时间:2023-10-29 19:39:12 24 4
gpt4 key购买 nike

是否有解决方法来更新匿名方法中的 ref 参数?

我知道匿名方法不允许访问外部作用域的 ref 参数,但是还有其他方法吗?我正在为 MessageStream 使用外部库,因此无法更改委托(delegate)的参数...

void DoWork(ref int count)
{
MessageStream Stream = new MessageStream();
Stream.MessageReceived += (o, args) =>
{
//Error cannot use ref or out parameter inside anonymous method
count++;
};
}

最佳答案

在您的情况下,此问题没有可行的解决方法:到 Stream.MessageReceived 事件触发时,count 可能已超出范围DoWork 函数的调用者。

在这种情况下,您应该将 count 封装在一个对象中,并在事件处理程序和调用者中保留对该对象的引用,如下所示:

class Counter {
public int Value {get;private set;}
public void Increment() {Value++;}
}
void DoWork(Counter count) {
MessageStream Stream = new MessageStream();
Stream.MessageReceived += (o, args) => {
count.Increment();
};
}

关于c# - 更新匿名方法中的 ref 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23630765/

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