从这个答案产生,出现了一些似乎没有意义的代码:
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
应该有一个私有的 setter,不应该以这种方式分配给它。
但是,此代码可以正常编译和运行,并且t.ListOfStrings
已分配了值。
为什么这个集合初始化忽略了私有setter?