我想要一个Dictionary<string, string>
属性,不应该由外部代码更改/设置。为了实现这一点,我可以使用get访问器声明私有变量和它的属性。
e.g。
private static Dictionary<string, string> myDic = new Dictionary <string, string>();
Public static Dictionary<string, string> MyDictionary
{
get { return myDic;}
}
但在这种情况下,外部代码可以操纵字典的“内容”。
例如MYClass.MyDictionary["FirstSampleKey"] = "Replacing original value by New Value";
我不希望任何外部代码操纵字典的内容。我怎样才能做到这一点?
答案 0 :(得分:1)
我不相信有一个只读字典(因为有一个ReadOnlyCollection会很好)。你最好的选择可能是不公开字典,并公开允许开发人员获取信息的属性/方法,而不允许他们直接访问字典。
如果这是你将要做的很多事情,你可以考虑使用别人的ReadOnlyDictionary实现(如果你谷歌它有很多),或者你可以自己编写。
答案 1 :(得分:1)
我还会说你可以为开发人员编写一个方法来查找他们的单词,否则你可以返回字典的副本,这样字典就像现在一样工作,但是因为你必须每次调用get方法时复制字典,如果它是一个大字典,可能需要一些时间。