1

可以将字典的键设置为引用类型吗?字典是存储这些对象的引用还是存储对象实例?我有一本字典,我将列表是否加载为布尔值存储;如果它真的存储海量的列表,那就麻烦了。

public Dictionary<object, bool> isloaded; 
4

2 回答 2

4

完全没问题 - 它只存储参考,而不是副本。

但是,您必须小心,在插入键对象后,您不要更改用于计算键的 GetHashCode() 的键对象的任何字段。

这是因为对象的 GetHashCode() 用于生成整数键,该键在内部用作键。显然,如果在插入密钥后情况发生了变化,那么它将出现在错误的位置并且会发生坏事。

(我个人认为你应该只使用不可变对象作为键。)

于 2013-01-17T09:55:26.130 回答
3

是的,它是“好的”。

字典存储参考;它不会复制实例。

请注意,如果关键对象是可变的并且以它们的哈希码会改变的方式发生变化,这可能会出现问题。另请注意,无论用作键的引用类型是什么,它们的GetHashCode()方法都应该具有有意义的实现。

于 2013-01-17T09:55:41.047 回答