说我做一个静态课程,例如按照扩展方法的关注:

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
    }    
}

在多用户系统中,状态管理字典是否无法为转换算法提供正确的值?普通课程会成为更好的设计,还是将方法内的字典推出更好的设计?

有帮助吗?

解决方案

您的字典只有三种场景:要么 必须 分享,否则 一定不 分享,或者你 不知道或关心.

如果它 必须 被共享,您必须实现正确的锁定。但是由于您要做的第一件事 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.
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top