从类实例访问私有字段

use*_*104 -2 .net c#

我想知道为什么这段代码是正确的,并且可以向私有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; }
}
Run Code Online (Sandbox Code Playgroud)

谢谢.

Cod*_*ray 7

酒店的吸气剂是公共的.因此,它返回一个List<String>可变的类型的对象.你的代码只是在修改那个对象; 完全合法.

仅声明setter private意味着您将无法分配 List<String>对象NameList.