3

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

4

3 回答 3

10

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

话虽如此,如果总是只有三个值,我会考虑只使用具有三个属性的类而不是字典。如果键是固定的并且预先知道,那么制作字典是没有意义的 - 三个属性将具有更简单、更不容易出错的 API 并且更高效。

于 2013-04-30T22:27:39.213 回答
4

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

于 2013-04-30T22:27:15.360 回答
0

隐藏几乎从来都不是正确的做法(我假设“隐藏”是指子类化并使用new隐藏基类的方法)。如果您隐藏该Add方法并且消费者将您的对象转换回基类,他们将能够访问隐藏的方法并向其添加项目。

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

于 2013-04-30T22:30:29.177 回答