c# – 初始化对象中的集合?

前端之家收集整理的这篇文章主要介绍了c# – 初始化对象中的集合?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果一个对象具有一个集合的属性,对象是创建集合对象还是使消费者检查为null?我知道消费者不应该假设,只是想知道如果大多数人创建收藏对象,如果它永远不会被添加到.

解决方法

您还可以使用“Lazy initailizer”模式,其中集合未初始化,直到(并且除非)有人访问属性getter …这避免了在父对象被实例化为其他某些情况下创建它的开销目的不需要收集…
public class Division
    {
        private int divId;
        public int DivisionId { get; set; }

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

编辑:这种实现模式通常不是线程安全的…在第一个线程完成修改之前,emps可以被两个不同的线程读取为空.在这种情况下,可能没有关系,因为DivisionId是不可变的,虽然两个线程都会获得不同的集合,但它们都是有效的.因此,第二个线索将会是一个有效的收集. “可能”是因为第一个线程可能在第二个线程重置它之前开始使用emps.这不是线程安全的. Jon SKeet的另一个稍微更复杂的一个实现是线程安全的(参见This article on SIngletons他的例子/讨论如何解决这个问题.

猜你在找的C#相关文章