有没有办法在使用自动属性时使用集合初始值设定项?
// Uses collection initializer but not automatic properties
private List<int> _numbers = new List<int>();
public List<int> Numbers
{
get { return _numbers; }
set { _numbers = value; }
}
// Uses automatic properties but not collection initializer
public List<int> Numbers { get; set; }
// Is there some way to do something like this??
public List<int> Numbers { get; set; } = new List<int>();
答案 0 :(得分:4)
不,基本上。您必须在构造函数中初始化集合。说实话,可设置的集合很少是一个好主意无论如何;我实际上只使用(更改你的第一个版本,删除set
):
private readonly List<int> _numbers = new List<int>();
public List<int> Numbers { get { return _numbers; } }
或者如果我想在第一次访问之前推迟构建:
private List<int> _numbers;
public List<int> Numbers {
get { return _numbers ?? (_numbers = new List<int>()); }
}
答案 1 :(得分:1)
// Is there some way to do something like this??
public List<int> Numbers { get; set; } = new List<int>();
没有。您必须在显式定义的构造函数中初始化,这里没有要应用的字段初始化技巧。
此外,这与集合初始化器无关。你也无法初始化
public object Foo { get; set; }
在构造函数之外。