如何最好地防止向字典中添加内容

本文关键字:添加 字典 何最好 | 更新日期: 2023-09-27 18:11:40

我有一个字典对象,它有三个键/值对。我希望这些值能够被修改,但我想阻止添加更多。是否有防止添加新的键/值对的最佳方法?我正考虑隐藏Add方法。

如何最好地防止向字典中添加内容

只需将字典封装在自定义类中,不提供添加的方法。

也就是说,如果总是只有三个值,我会考虑只使用一个具有三个属性的类,而不是字典。如果键是固定的并且事先已知,那么制作字典是没有意义的——这三个属性将具有更简单、更不容易出错的API,并且效率更高。

创建一个禁止这些操作的包装器类,然后在想要使键集为只读时将字典包装在实例中。(例如,显式实现IDictionary<TKey, TValue>.Add()并让它抛出NotSupportedException。(

隐藏几乎从来都不是正确的做法(我认为"隐藏"指的是子类化和使用new隐藏基类的方法(。如果您隐藏了Add方法,并且使用者将您的对象强制转换回基类,那么他们将能够访问隐藏的方法并向其中添加项。

正如其他人所建议的,这里最好的方法可能是创建一个封装IDictionary的包装器,而不提供添加的方法。