Update ref parameter inside anonymous method
anonymous-methods, c#, ref
Solution
In your case there is no viable work-around to this problem: by the time the `Stream.MessageReceived` event fires, the `count` may be well out of scope in the caller of your `DoWork` function.
In situations like that you should encapsulate the `count` in an object, and keep a reference to that object in both the event handler and in the caller, like this:
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();
};
}
Problem
Is there a workaround to update a ref parameter inside an anonymous method? I know that the an anonymous method doesn't allow access to ref parameters of the outer scope, but is there another way to do it? I am using an external library for the MessageStream so cannot alter the arguments of the 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++; }; } ```