可以将字典的键设置为引用类型吗?字典是存储这些对象的引用还是存储对象实例?我有一本字典,我将列表是否加载为布尔值存储;如果它真的存储海量的列表,那就麻烦了。
public Dictionary<object, bool> isloaded;
可以将字典的键设置为引用类型吗?字典是存储这些对象的引用还是存储对象实例?我有一本字典,我将列表是否加载为布尔值存储;如果它真的存储海量的列表,那就麻烦了。
public Dictionary<object, bool> isloaded;
完全没问题 - 它只存储参考,而不是副本。
但是,您必须小心,在插入键对象后,您不要更改用于计算键的 GetHashCode() 的键对象的任何字段。
这是因为对象的 GetHashCode() 用于生成整数键,该键在内部用作键。显然,如果在插入密钥后情况发生了变化,那么它将出现在错误的位置并且会发生坏事。
(我个人认为你应该只使用不可变对象作为键。)
是的,它是“好的”。
字典存储参考;它不会复制实例。
请注意,如果关键对象是可变的并且以它们的哈希码会改变的方式发生变化,这可能会出现问题。另请注意,无论用作键的引用类型是什么,它们的GetHashCode()
方法都应该具有有意义的实现。