.net模式有什么好处

| 我一直在寻找一种能够提供同一类的线程安全和不安全版本的模式。这种技术方面非常明显。我想是希望找到命名/访问约定等... 因此,我可以在\'Systems.Collections \'命名空间中的任何地方找到这种模式:
public class WhatEv
{
    private class SyncWhatEv : WhatEv
    {
        // overrides IsSyncronized = true
        // overrides whatever else to make it thread safe
    }

    public virtual bool IsSynchronized
    {
        get { return false; }  
    } 

    public static WhatEv Synchronized(WhatEv whatEv)
    {
        return new SyncWhatEv(whatEv);
    }
}
有许多实现此目的的类:HashTable,Queue,ArrayList,Stack等...我了解继承。但是,为什么要使其成为私有的嵌套类,并让用户跳到箍圈上呢?这样做有什么好处吗?     
已邀请:
在大多数情况下,不需要对象的线程安全版本(即Hashtable,Queue)。因此,添加默认情况下使其成为线程安全所需的开销没有任何意义。通过使用Synchronized方法,允许需要线程安全的用户获得线程安全的版本。 该对象的同步版本除了线程安全性之外没有添加任何其他功能。他们不会公开任何新成员,知道他们的基础类型也没有帮助。因此,它们被设为私有,就像它们的公共/基类一样简单地“看起来”。     
从理论上讲,这是一个好主意,@CodeNaked有一个很好的解释。实际上,这仍然存在问题。例如,如果您需要对线程安全类进行2次调用,并且两个调用都需要线程安全,则仍然需要进行锁定。在此SO项目中有一个很好的解释:在C#中,最好使用Queue.Synchronized或lock()来保证线程安全?     
在考虑了这个周末之后,没有得到进一步的回应。我已决定答案是:女士们都疯了。提供对象的同步版本的全部目的是为了线程安全,但是线程在编译时无法要求对象的线程安全版本。该对象的验证必须在运行时进行,这是虚假的。 感谢大家的投入。我很感激。     

要回复问题请先登录注册