【发布时间】:2018-06-27 22:40:54
【问题描述】:
您好,我有一段简单的代码,其中我有一个字典的私有字段,以及一个通过 get 公开它的属性。
但是我仍然可以从其他类插入到该字典中,并且想知道如何防止这种情况发生,所以我只能通过它定义的类中的字段而不是通过公开它的属性插入字典?
这是我的字段/属性代码:
private Dictionary<UnitType, Entity> _systems;
public Dictionary<UnitType, Entity> Systems => _systems;
在其他课程中,我仍然能够做到MyClass.Systems.Add(),这是我想要阻止的。
这可能吗?
【问题讨论】:
-
将您的字典保存在私有财产或字段中。使用第二个(公共)属性来公开包装在 ReadOnlyDictionary 中的字典
-
@elgonzo 所以我的只读字典每次我调用它时都会转换字典?
-
没有。我说“...字典 wrapped 在 ReadOnlyDictionary 中”。查找 ReadOnlyDictionary 的文档(我在第一条评论中链接)。只需将字典转换为
IReadOnlyDictionary仍然允许它再次转换为普通可写Dictionary<TKay,TValue>... -
但是,如果您只是想让 Intellisense 停止对您提出修改方法的建议,那么您当然可以放弃使用 ReadOnlyDictionary 包装器并将您的字典转换为
IReadOnlyDictionary。 -
好的,谢谢你的帮助,是的,这个项目只需要清理智能感知就足够了 :)
标签: c# collections scope