我想知道使用泛型TList<T>
where T
is any interface type (除了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;
上面的代码合法吗?