在坚持代码分析错误的过程中,我正在将我的属性更改为具有私有设置器。然后我开始试图理解为什么更多。根据一些研究,MS说:
可写集合属性允许用户用完全不同的集合替换集合。
答案在这里指出:
在对象上添加公共设置器
List<T>
是危险的。
但没有列出它危险的原因。这就是我很好奇的部分。
如果我们有这个集合:
public List<Foo> Foos { get; set; }
为什么要将setter设为私有?显然我们不希望客户端代码替换集合,但是如果客户端可以删除每个元素,然后添加他们想要的任何内容,那有什么意义呢?这与完全替换集合不一样吗?遵循此代码分析规则如何提供价值?