C# 为什么我可以对只读属性使用初始值设定项语法
我有一个C# 为什么我可以对只读属性使用初始值设定项语法,c#,C#,我有一个Manager类,具有以下两个属性: public class Manager() { private string _name; private List<int> _reportingEmployeesIds; public string Name { get { return _name; }} public List<int> ReportingEmployeesIds { get {return _reportingEmployeesId
Manager
类,具有以下两个属性:
public class Manager()
{
private string _name;
private List<int> _reportingEmployeesIds;
public string Name { get { return _name; }}
public List<int> ReportingEmployeesIds { get {return _reportingEmployeesIds; } }
两个属性中都缺少set属性,但编译器允许设置ReportingEmployeeSID
,而不允许设置Name属性(错误:property或indexer Manager.Name无法分配给,它是只读的)
为什么会这样?为什么编译器不抱怨
ReportingEmployeesIds
是只读的。ReportingEmployeesIds={2345432521}没有设置属性。它是对每个项目调用Add(…)
的缩写。您始终可以添加,即使对于只读列表属性也是如此
要使其成为一个集合,需要:
ReportingEmployeesIds = new List<int> {2345, 432, 521}
基本上是:
var m = new Manager();
m.Name = "Dave";
var tmp = m.ReportingEmployeesIds;
tmp.Add(2345);
tmp.Add(432);
tmp.Add(521);
m.ReportingEmployeesIds
是否真的保存在tmp
变量中,但每次调用Add
时都不会被访问?
Manager m = new Manager {Name = "Dave", ReportingEmployeesIds = {2345, 432, 521} }
var m = new Manager();
m.Name = "Dave";
var tmp = m.ReportingEmployeesIds;
tmp.Add(2345);
tmp.Add(432);
tmp.Add(521);