【发布时间】:2014-07-01 02:21:49
【问题描述】:
是否有解决方法来更新匿名方法中的 ref 参数?
我知道匿名方法不允许访问外部作用域的 ref 参数,但是还有其他方法吗?我正在为 MessageStream 使用外部库,因此无法更改委托的参数...
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将在DoWork返回之前引发。你能确定吗? -
你知道不安全的上下文吗?如果没有,我会用这个解决方案发布答案
-
@faby 我想我知道你在想什么,如果我是对的,那是行不通的。它通常会工作,但有时会失败,并且无法修复它以使其始终工作。
-
为什么你在那个参数上有
ref?你确定你需要它吗?很少看到它被使用。如果您能向我们展示如何使用它的更多信息,我们或许可以建议另一种可行的方法。 -
@hvd 我知道这是不安全上下文的问题
标签: c# ref anonymous-methods