初始化集合属性好吗

时间:2018-08-23 08:13:22

标签: c#

初始化集合属性好吗?

例如,我的班级是

 public class Part
 {
        public int Id { get; set; }
        public int PartTypeId { get; set; }        
        public IList<Child> Instructions { get; set; }
 }

初始化这样的指令是一个好主意吗?:

public IList<Child> Instructions { get; set; } = new List<Child>();
  1. 最佳做法是什么,默认初始化还是不初始化子集合属性?
  2. 考虑延迟初始化好吗?

1 个答案:

答案 0 :(得分:5)

  1. 好吧,如果您不初始化您的收藏夹,您将无法使用它们。如果您要使用集合,不妨尽快对其进行初始化,这样就可以使用它而不必担心空引用。

  2. 不必懒惰地初始化一个空集合。空集合不需要太多的工作来初始化,并且初始化后也不会占用太多的内存。即使您最终没有在应用程序的生存期内填充它,也不会对性能产生可衡量的影响。

    非空集合有些不同。如果它是少量原始值的集合,那么也可能不会有太大的不同。但是,如果这将是启动时不需要的大型,复杂对象的集合,那么最好懒惰地这样做。是否在属性声明中使用new并分别填充它,还是按需一次new对其进行填充和填充,都是一个优先事项(以及您的应用程序是否依赖于集合)是否存在-大多数应用程序会询问是否填充了集合,这使我们回到了关于空集合的观点。

正如Damien_The_Unbeliever所指出的那样,您可能根本不希望集合类以外的任何人都可以设置您的collection属性。您的所有收集操作都将在收集本身上执行,而无需实际更改(或删除)收集,因此不需要设置器,实际上应该将其排除在外:

public IList<Child> Instructions { get; } = new List<Child>();