2014-10-26 114 views
1

有人可以向我解释这是否可能,或者我完全错误地理解了这个Delphi特性。Delphi TList <T>泛型

比方说,我有一个类,我创建了其中的一些,然后将它们添加到一个ObjectList。通常我不喜欢这样写道:

Type TMyClass = class(TObject) 
    stuff: string; 
.. 
end; 

Var things: TObjectList; 

things := TObjectList.Create; 
things.Add(TMyClass.Create); 

// now I want to access stuff, so I need to typecast the class 
TMyClass(things[0]).stuff.. 

所以,现在我的问题,是有可能宣布报名的方式,我可能只是不喜欢的东西.. [0] .stuff,仍然可以访问的通常TObjectList的功能如.sort .indexof等..? (不用为此设置一个特殊的类来模拟对象列表)

回答

3

您正在使用管理指针列表的TObjectList from System.Contnrs。您需要TObjectList from System.Generics.Collections。我知道,使用相同的名称可能会有点混乱。

Type TMyClass = class(TObject) 
    stuff: string; 
.. 
end; 

Var things: TObjectList<TMyCLass>; 

things := TObjectList<TMyCLass>.Create; 
things.Add(TMyClass.Create); 

things[0].stuff.. 
+0

谢谢,这非常有用。最后一件事,你能给我一个IComparer函数的例子来使用这种不同类型的objectlist吗?通常的功能不适用于此。 (for .sort) – hikari 2014-10-27 01:07:33

+0

没想到,算出来了。谢谢。 – hikari 2014-10-27 01:36:09

+0

@hikari http://stackoverflow.com/questions/13252169/how-do-i-sort-a-generic-list-using-a-custom-comparer/13252367#13252367 – 2014-10-27 07:21:34