Dim*_*ris 11 c# visibility list
我需要你的意见,因为我已经阅读了很多不同的主题.如果您List<T>在类声明中有一个或任何类型的列表,您是否将其设为私有,然后使用特定方法添加或删除项目,还是将其公开?
每个选项的任何缺点/优点都会使您的观点受到高度赞赏.
举个例子,假设我们有class Employer私有字段name和List<Employees>.我的问题是,我们是否应该将员工名单列为私人或公开,以及两种情况下的优缺点.
对于List明确是的,它应该是私有的,这取决于你所暴露的功能应该做什么,IEnuemerable,ICollection或IList等接口将是更好的选择,或者如果你暴露了一个集合请参阅SLaks回复.
通常暴露内部结构和状态是一个坏主意,因为您的类型为List的对象都是,所以您希望将其保持在内部.让用户能够迭代它,添加或删除项目可能是有意义的,但你仍然应该保持List内部并暴露添加/删除方法或至少暴露一个接口使得可以更改不影响公共接口的内部表示的类型.
如果您使用界面进行曝光,则应该选择最窄的界面.
因此,如果客户端代码只需要枚举它.如果客户端代码需要索引使用ICollection等,请使用IEnumerable.
此外,如果您公开为IEnumerable,您应该确保您返回的内容实际上只能通过使用只读集合类或使用迭代器块来读取
更新后编辑 关于您的示例.问问自己除了雇主之外的任何人都可以改变他的员工是谁,这是否有意义?用你已经选择过的话来对我说.雇主雇用员工,并且应该完全控制他/她的员工.因此,在这种特殊情况下,我会将其保密并公开Hire(IEmployee员工)和Fire(IEmployee员工),这样代码明确表明了意图