|
|
1
56
如何公开集合完全取决于用户打算如何与其交互。 如果用户将从对象集合中添加和删除项,则最好使用简单的仅获取集合属性(原始问题中的选项#1):
注意
如果内部集合未实现
此方法易于实现,并且还提供了对所有成员的访问,而无需公开内部集合。但是,它确实要求集合保持未定义状态,因为如果在修改集合后尝试枚举集合,则BCL集合类将引发异常。如果基础集合可能会更改,您可以创建一个轻型包装器来安全地枚举集合,或者返回集合的副本。
|
|
|
2
3
和对象上的公共方法来修改集合。
如果该类被认为是一个供其他人使用的存储库,那么我只需按照方法1公开私有变量,因为这样可以节省编写自己的API的时间,但我倾向于在生产代码中回避这一点。 |
|
|
3
1
Immutable Collections . 如果您需要进行更改,则会给您一份修改后的副本,而不是更改原件。它的实现方式与可变集合的性能具有竞争力。或者,如果您不必多次复制原始文件以对每个副本进行多次不同(不兼容)的更改,则更好。 |
|
|
4
1
我建议使用新的
如果您需要保证集合不能从外部操作,那么请考虑
有关此主题的更多信息,请参阅本页 Wiki page |
|
|
5
0
如果您只是想在实例上公开一个集合,那么对私有成员变量使用getter/setter对我来说似乎是最明智的解决方案(您提出的第一个选项)。 |
|
|
6
0
ReadOnlyObservableCollection(T) 来包装你的收藏。在您的场景中,这是否不是一种妥协? |
|
|
7
0
我从不公开私有集合属性,因为程序的其他部分可以在没有父级注意的情况下更改它,因此在getter方法中,我返回一个包含集合对象的数组,在setter方法中,我调用
|
|
|
A B · C#Excel自动调整列避免长文本时出错 1 年前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 1 年前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 1 年前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |