【发布时间】:2021-09-19 01:25:10
【问题描述】:
Delphi 可以做如下声明吗?
TDictionary <T, TList <T>>
编译器不喜欢它:
未声明的标识符:'T'
我在uses子句中添加了:
System.Generics.Collections;
更新:使用这段代码我有这些问题:
interface
uses
System.Generics.Collections;
type
TListado = class(TObject)
private
FListado: TDictionary<T, V: TList<T>>;
function GetListado: TDictionary<T,TList<T>>;
procedure SetListado(const Value: TDictionary<T, TList<T>>);
public
property Listado: TDictionary<T,TList<T>> read GetListado write SetListado;
function ReadItems(Cliente: T):TList<T>;
end;
我更改了单元代码,但在它起作用之前,我不知道我失败了。
未声明的标识符:'T'
【问题讨论】:
-
在什么情况下?如果
T来自更高的上下文,即带有TDictionary数据成员的通用类,那么它应该可以正常工作。您能否提供minimal reproducible example 说明您遇到的具体问题? -
如果你想扩展通用字典类你可能想要
TDictionary<T> = class(TDictionary<T, TList<T>>) -
或者如果你想将第二泛型类型限制为
TList<T>,请使用TDictionary<T, V: TList<T>> = class -
@jmontegrosso 供将来参考,这些重要细节属于您的主要问题,而不是 cmets。这次我为你搬走了它们。下次,请更加勤奋地提前提出完整而详细的问题。
标签: delphi generics tdictionary