我想知道为什么这段代码是正确的,并且可以将值添加到私有NameList。我认为私有字段无法从类实例中访问。
class Program
{
static void Main(string[] args)
{
Test test = new Test();
test.NameList.AddRange(new[] { "Test" }); // why OK?
test.Name = "fake"; // error, OK!
}
}
class Test
{
public string Name { get; private set; }
public List<string> NameList { get; private set; }
}
感谢。
答案 0 :(得分:7)
该物业的吸气剂是公开的。因此,它返回一个类型为List<String>
的对象,它是可变的。你的代码只是在修改那个对象;完全合法。
仅声明setter private表示您无法将新 List<String>
对象分配给NameList
。