2

.net 类 SynchronizedReadOnlyCollection 有 4 个构造函数。

    public SynchronizedReadOnlyCollection();
    public SynchronizedReadOnlyCollection(object syncRoot);
    public SynchronizedReadOnlyCollection(object syncRoot, IEnumerable<T> list);
    public SynchronizedReadOnlyCollection(object syncRoot, params T[] list);

无参构造函数和只有锁对象的构造函数有什么用?如果创建集合时不填充集合,集合将始终为空?我错过了什么吗?

4

2 回答 2

4

在某些时候,您可能需要一个空集合,例如,如果您正在初始化一个类并且在调用构造函数时不知道数据。如果您不分配空集合,则其他代码在尝试访问该字段/属性并抛出 NullReferenceException 时可能会失败。如果在稍后阶段提供数据,则该代码只需将字段替换为新的填充实例SynchronizedReaOnlyCollection

于 2010-08-28T18:02:45.193 回答
1
public SynchronizedReadOnlyCollection();

初始化一个新的空集合,它将锁定一个内部字段。

public SynchronizedReadOnlyCollection(object syncRoot);

初始化一个新的空集合,它将锁定您提供的对象。

public SynchronizedReadOnlyCollection(object syncRoot, IEnumerable<T> list);

初始化一个包含列表中元素的新集合,该集合将锁定您提供的对象。

该文档很好地解释了这一点。值得一读。

于 2010-08-28T18:00:12.640 回答