当前位置:  开发笔记 > 编程语言 > 正文

如何避免在匿名方法块中使用out参数?

如何解决《如何避免在匿名方法块中使用out参数?》经验,为你挑选了1个好方法。

以下方法无法编译.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参数问题).



1> Marc Gravell..:
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

推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有