概念
Delphi 的泛型容器 TDictionary<Key, Value> 里面的 Key 和 Value 可以是任何类型的数据。
比如:
MyDict: TDictionary<Integer, string>;
又或者:
MyDict: TDictionary<Integer, TPerson>
TPerson = class
FMyName: string;
FMyAge: Integer;
private
public
end;
问题
如果 Value 是一个对象,当容器内容被清理,或者容器本身被释放时,这个对象如何释放?
比如:
var
APerson: TPerson;
begin
APerson := TPerson.Create;
APerson.FMyName := 'abcd';
APerson.FMyAge := 25;
MyDict.Add(APerson.FMyAge, APerson);
end;
解决方案之一
对于 TDicitonary 来说,它有一个事件:OnValueNotify
因此,对于上述代码,为它增加一个事件方法,代码如下:
var
APerson: TPerson;
begin
APerson := TPerson.Create;
APerson.FMyName := 'abcd';
APerson.FMyAge := 25;
M

最低0.47元/天 解锁文章
5889

被折叠的 条评论
为什么被折叠?



