2

假设我使用扩展方法创建了一个静态类,如下所示:

public static class MyStaticExtensionClass
{
    private static readonly Dictionary<int, SomeClass> AlgoMgmtDict
        = new Dictionary<int, SomeClass>();

    public static OutputClass ToOutput(this InputClass input)
    {
        // clears up the dict
        // does some kind of transform over the input class
        // return an OutputClass object
    }    
}

在多用户系统中,状态管理字典会无法为变换算法提供正确的值吗?常规类会是更好的设计,还是将 Dictionary 推入方法中是更好的设计?

4

1 回答 1

4

您的字典只有三种情况可用:要么必须共享,要么不能共享,或者您不知道或不关心

如果必须共享,则必须实施适当的锁定。但是既然你要做的第一件事就是ToOutput()清字典,看起来分享它不会给你带来很多好处。

所以,我们只剩下剩下的两种情况(不得共享,或者不知道或不关心),在这两种情况下,最好将字典隔离在内部的局部变量中ToOutput()

public static OutputClass ToOutput(this InputClass input)
{
    Dictionary<int, SomeClass> algoMgmtDict = new Dictionary<int, SomeClass>();
    // Dictionary starts up empty, no need to clear anything.

    // Do some kind of transform over the `input` object.
    // Return an OutputClass instance.
}
于 2010-12-31T08:50:48.450 回答