小编Asb*_*and的帖子

为什么我允许使用对象初始化程序修改只读的属性?

我有这个简单的代码:

public static void Main(String[] args)
{
    Data data = new Data { List = { "1", "2", "3", "4" } };
    foreach (var str in data.List)
        Console.WriteLine(str);
    Console.ReadLine();
}

public class Data
{
    private List<String> _List = new List<String>();
    public List<String> List
    {
        get { return _List; }
    }
    public Data() { }
}
Run Code Online (Sandbox Code Playgroud)

所以当我创建一个Data类时:

Data data = new Data { List = { "1", "2", "3", "4" } };
Run Code Online (Sandbox Code Playgroud)

该列表中填充了字符串"1","2","3","4",即使它没有set.

为什么会这样?

c# properties object-initializers getter-setter collection-initializer

7
推荐指数
1
解决办法
634
查看次数