初始化集合属性好吗?
例如,我的班级是
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>();
答案 0 :(得分:5)
好吧,如果您不初始化您的收藏夹,您将无法使用它们。如果您要使用集合,不妨尽快对其进行初始化,这样就可以使用它而不必担心空引用。
不必懒惰地初始化一个空集合。空集合不需要太多的工作来初始化,并且初始化后也不会占用太多的内存。即使您最终没有在应用程序的生存期内填充它,也不会对性能产生可衡量的影响。
非空集合有些不同。如果它是少量原始值的集合,那么也可能不会有太大的不同。但是,如果这将是启动时不需要的大型,复杂对象的集合,那么最好懒惰地这样做。是否在属性声明中使用new
并分别填充它,还是按需一次new
对其进行填充和填充,都是一个优先事项(以及您的应用程序是否依赖于集合)是否存在-大多数应用程序会询问是否填充了集合,这使我们回到了关于空集合的观点。
正如Damien_The_Unbeliever所指出的那样,您可能根本不希望集合类以外的任何人都可以设置您的collection属性。您的所有收集操作都将在收集本身上执行,而无需实际更改(或删除)收集,因此不需要设置器,实际上应该将其排除在外:
public IList<Child> Instructions { get; } = new List<Child>();