我想写一个泛型类,其中包含一个通用的TObjectList < T>它应该只包含TItem的元素。TGenericClass <T>包含一个TObjectList <T>不能编译
uses
Generics.Collections;
type
TItem = class
end;
TGenericClass<T: TItem> = class
public
SimpleList: TList<T>; // This compiles
ObjectList: TObjectList<T>; // This doesn't compile: Compiler complaints that "T is not a class type"
end;
这是错误的语法吗?顺便说一下:TGenericClass < T:class> compiles,但是然后List中的Items不再是TItem,这就是我不想要的。
是的,这会起作用,但它正是那种引入了通用列表的丑陋代码,可以让我们摆脱困境。这是一个纯粹而简单的编译器错误。它已被团队认可,并且很快就会被修复。像这样的解决方法暂时可行,但不要太过分了。 – 2009-06-30 12:35:33