我有这个示例代码:
static class Program
{
var x = new TestClass { TestList = { "Peter", "Paul" } };
// x.TestList is loaded with 3 string elements: "Hi there", "Peter", "Paul"
}
public class TestClass
{
public List<string> TestList {get; private set;}
public TestClass()
{
TestList = new List<string>() { "Hi there" };
}
}
当我执行此代码时,x.TestList
加载了3个字符串元素:"Hi there", "Peter", "Paul"
为什么C#允许这种初始化?我在TestList
上有私人二传手,为什么允许这样做?
为什么生成的x
列表由3个元素组成,这些元素是在无参数构造函数和新TestClass
对象所使用的类初始化程序上执行的初始化代码的并集产生的?为什么不在列表中包含1或2个对象?
第3。 [最重要]:我如何防止这种行为,以防止代码注入pe。在字符串属性?
感谢。