我能否在TDictionary中更改键而不更改值呢?
为了解释,我使用的是TObjectDictionary,它是从Delphi XE Generics.Collections单元中的TDictionary派生而来。这很好,但是我还需要能够更改存储的对象的键值。
我的第一次尝试如下:
MyObject := MyDictionary.Items[OldKeyValue];
MyDictionary.Remove(OldKeyValue);
MyDictionary.Add(NewKeyValue, MyObject);
这样做的问题在于Remove()导致对象被释放。我尝试使用AddOrSetValue将值先更改为nil,但这也会释放对象。既然已经告诉字典它拥有它们,那就没关系了。然而,TObjectDictionary中没有额外的函数可以在不释放的情况下移除对象,所以我尝试在不修改值的情况下更改字典中的键。然而在Delphi XE帮助文件中没有看到任何可以实现这个目的的东西。这可能是可能的吗?如果不行,我就得回去使用一个字典并自己释放所有内容。