【发布时间】:2010-10-05 10:49:46
【问题描述】:
我想知道使用泛型TList<T> 是否有危险,其中T 是任何接口类型(IUnknown/IInterface 除外)。我大量使用接口并将它们存储在列表中。有些接口是我自己的,有些是一些COM接口提供的,所以涉及到COM。
我看到了一个潜在的问题,即检查实例是否相等,例如当我使用列表的Remove 方法时(内部需要将我提供的值与包含的值进行比较)。根据 COM 规则,您只能在将两个接口转换为 IUnknown 后比较它们是否相等。我不知道在TList<T> 中查找我的接口所涉及的默认比较器是否知道这一点。
用一个例子来说明我的问题:
var
list:TList<IMyInterface>;
intf:IMyInterface;
begin
...
list:=TList<IMyInterface>.Create;
list.Add(intf);
...
list.Remove(intf);
end;
上面的代码合法吗?
【问题讨论】:
标签: delphi generics com delphi-2009 interface