Skip to main content
 首页 » 编程设计

c#之为什么集合初始化会忽略访问修饰符

2024年02月13日28pengyingh

<分区>

从 this answer 产生,出现了一些似乎没有意义的代码:

class Program 
{ 
    static void Main(string[] args) 
    { 
        var t = new Testing 
        { 
            ListOfStrings = 
            {  
                "hello",  
                "goodbye"  
            } 
        }; 
 
        Console.ReadKey(); 
    } 
} 
 
public class Testing 
{ 
    public List<string> ListOfStrings { get; private set; } 
 
    public Testing() 
    { 
        ListOfStrings = new List<string>(); 
    } 
} 

乍一看,人们会认为这段代码无法编译:毕竟 ListOfStrings 应该有一个私有(private)的 setter,并且不应该以这种方式分配给它。

但是,此代码编译并运行良好,t.ListOfStrings 已分配值。

为什么这个集合初始化会忽略私有(private) setter?