当前位置:  开发笔记 > 编程语言 > 正文

在对象中初始化集合?

如何解决《在对象中初始化集合?》经验,为你挑选了1个好方法。

如果对象具有属于集合的属性,那么对象是应该创建集合对象还是让使用者检查null?我知道消费者不应该假设,只是想知道大多数人是否创建了集合对象,如果它从未被添加到.



1> Charles Bret..:

您也可以使用"Lazy initailizer"模式,其中集合未初始化,直到(并且除非)有人访问它的属性getter ...这避免了在父对象被实例化为某些其他情况的情况下创建它的开销.不需要收集的目的......

   public class Division
    {
        private int divId;
        public int DivisionId { get; set; }

        private Collection emps;
        public Collection Employees
        { get {return emps?? (emps = new Collection(DivisionId));}} 
    }

编辑:这个实现模式通常不是线程安全的......在第一个线程完成修改之前,emps可以被两个不同的线程读取为null.在这种情况下,它可能无关紧要,因为DivisionId是不可变的,虽然两个线程都会得到不同的集合,但它们都是有效的.因此,当第二个线程掠过时,emps将是一个有效的集合.'可能'是因为第一个线程可能在第二个线程重置之前开始使用emps.这不是线程安全的.Jon SKeet的另一个稍微复杂的实现是线程安全的(参见本文关于SIngletons的文章 /讨论如何解决这个问题.

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有