The following method does not compile. Visual Studio warns ‘An out parameter may not be used within an anonymous method’. The WithReaderLock(Proc action) method takes a delegate void Proc().
public Boolean TryGetValue(TKey key, out TValue value) { Boolean got = false; WithReaderLock(delegate { got = dictionary.TryGetValue(key, out value); }); return got; }
What’s the best way to get this behavior? (Please refrain from providing advice on threadsafe dictionaries, this question is intended to solve the out parameter problem in general).
(edited – small bug)
For info, in .NET 3.5 you might want to use the
Actiondelegate instead of rolling your own, since people will recognise it more. Even in 2.0, there are lots ofvoid Foo()delegates:ThreadStart,MethodInvoker, etc – butActionis the easiest to follow ;-p