.net 具有自动属性的集合初始值设定项

.net 具有自动属性的集合初始值设定项,.net,collections,syntax,properties,.net,Collections,Syntax,Properties,在同时使用自动属性时,是否有方法使用集合初始值设定项 // 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 a

在同时使用自动属性时,是否有方法使用集合初始值设定项

// 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>();
//使用集合初始值设定项,但不使用自动属性
私有列表_编号=新列表();
公开名单号码
{
获取{return\u numbers;}
设置{u numbers=value;}
}
//使用自动属性,但不使用集合初始值设定项
公共列表编号{get;set;}
//有没有办法做这样的事??
公共列表编号{get;set;}=new List();
//有什么方法可以做这样的事情吗???

公共列表编号{get;set;}=new List()

不可以。您必须在显式定义的构造函数中进行初始化,这里没有可应用的字段初始化技巧

此外,这与集合初始化器无关。您也不能初始化

public object Foo { get; set; }

在构造函数之外。

基本上没有。您必须在构造函数中初始化集合。老实说,可设置的集合很少是个好主意;实际上,我会使用just(更改您的第一个版本,删除
):

private readonly List _numbers=new List();
公共列表编号{获取{返回_编号;}}
或者,如果我想将施工推迟到第一次进入:

private List<int> _numbers;
public List<int> Numbers {
    get { return _numbers ?? (_numbers = new List<int>()); }
}
private List\u编号;
公开名单号码{
获取{return _numbers???(_numbers=new List());}
}
private List<int> _numbers;
public List<int> Numbers {
    get { return _numbers ?? (_numbers = new List<int>()); }
}