初始化集合属性是否合适

Sha*_*esh 2 c#

初始化集合属性是否有用?

例如,我的班级是,

 public class Part
 {
        public int Id { get; set; }
        public int PartTypeId { get; set; }        
        public IList<Child> Instructions { get; set; }
 }
Run Code Online (Sandbox Code Playgroud)

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

public IList<Child> Instructions { get; set; } = new List<Child>();
Run Code Online (Sandbox Code Playgroud)
  1. 什么是最佳实践,默认初始化或不初始化子集合属性?
  2. 考虑Lazy初始化是否好?

Bol*_*ock 5

  1. 好吧,如果你没有初始化你的收藏,你将无法使用它们.如果你打算使用一个集合,不妨尽快初始化它,这样你就可以使用它而不必担心空引用.

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

    一个非空集是有点的一个不同的故事.如果它是原始值的一小部分,它可能也不会产生太大的影响.但如果这是一个大型复杂对象的集合,在发布时不需要,那么懒得去做可能是明智之举.无论你是new在属性声明中使用a 进行单独填充,还是new按需填充和填充它,都是一个优先考虑的问题(以及你的应用程序是否依赖于集合是否存在 - 大多数应用程序询问是否收集是否填充,这使我们回到我的空集合点.

正如Damien_The_Unbeliever所指出的那样,你可能不希望你的集合属性可以被类本身以外的任何人设置,如果有的话.所有的集合操作都将在集合本身上执行,而不实际更改(或删除)集合,因此不需要setter,实际上应该省略它:

public IList<Child> Instructions { get; } = new List<Child>();
Run Code Online (Sandbox Code Playgroud)