以下方法无法编译.Visual Studio警告"可能无法在匿名方法中使用out参数".该WithReaderLock(Proc action)
方法需要一个delegate void Proc()
.
public Boolean TryGetValue(TKey key, out TValue value) { Boolean got = false; WithReaderLock(delegate { got = dictionary.TryGetValue(key, out value); }); return got; }
获得这种行为的最佳方法是什么?(请不要提供有关线程安全词典的建议,这个问题一般是为了解决out参数问题).
public bool TryGetValue(TKey key, out TValue value) { bool got = false; TValue tmp = default(TValue); // for definite assignment WithReaderLock(delegate { got = dictionary.TryGetValue(key, out tmp); }); value = tmp; return got; }
(编辑 - 小虫子)
有关信息,在.NET 3.5中,您可能希望使用Action
委托而不是自己编写代理,因为人们会更多地识别它.即使是在2.0,有很多void Foo()
代表:ThreadStart
,MethodInvoker
,等等-但是Action
是最容易遵循;-p