代码之家  ›  专栏  ›  技术社区  ›  TTT

C,SynchronizedReadOnlyCollection及其构造函数

  •  2
  • TTT  · 技术社区  · 14 年前

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

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

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

    2 回复  |  直到 14 年前
        1
  •  4
  •   Femaref    14 年前

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

        2
  •  1
  •   Darin Dimitrov    14 年前
    public SynchronizedReadOnlyCollection();
    

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

    public SynchronizedReadOnlyCollection(object syncRoot);
    

    初始化将锁定所提供对象的新空集合。

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

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

    The documentation 解释得很好。值得一读。

    推荐文章