我有一个 List<>
的对象由属性暴露。我通常在属性 getter 中初始化我的列表,如下所示:
public class Foo
{
private List<bar> _barList;
public List<bar>
{
get
{
if(_barList == null)
{
_barList = new List<Bar>()
}
return _barList;
}
set
{
_barList = value;
}
}
public Foo()
{
}
}
但是,我的同事们通常更喜欢在类构造函数中初始化列表,如下所示:
public class Foo
{
public List<bar> BarList { get; set; }
public Foo()
{
BarList = new List<Bar>();
}
}
这两种情况都阻止了 BarList
在初始化之前被访问。由于使用了自动属性,第二个看起来更简洁。不过,第一个似乎是更好的选择,因为列表仅在首次使用时才被初始化。还有其他我应该考虑的因素吗?有这方面的最佳实践吗?
最佳答案
除了usrs answer之外,还有一个关于这个问题的答案,使用C# 6.0。
其中一个新功能是自动实现属性的初始值设定项。你会写:
public class Foo
{
public List<bar> BarList { get; set; } = new List<bar>();
}
此外,查看新的主构造函数,发现 a programmers.stackexchange article .
此初始化程序将在对象初始化时调用。在内存消耗/性能方面,它应该等于在构造函数中初始化属性。
关于c# - 在属性中初始化列表还是在构造函数中初始化列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31513281/