从类实例访问私有字段
本文关键字:字段 访问 实例 | 更新日期: 2023-09-27 18:15:54
我想知道为什么这段代码是正确的,并且有可能向私有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; }
}
谢谢。
属性的getter是public。因此,它返回一个类型为List<String>
的对象,它是可变的。你的代码只是在修改那个对象;完全合法。
将setter声明为private只意味着不能将新的 List<String>
对象赋值给NameList
。