Delphi在线文档说
“避免在应用程序代码中使用ClassType”。
但是有很多地方需要类类型。例如,当一个程序使用System.Contnrs。TClassList类时,我需要一个对象的ClassType在IndexOf()的参数中传递它。
ClassType文档中此建议背后的原因是什么?
答案 0 :(得分:17)
给出这个建议的最明显的原因是想要编写这样的代码的程序员:
if obj.ClassType = TStringList then
....
如果对象的类为TStringList
,则该条件仅评估为true。但是,通常您会希望条件代码为TStringList
和任何后代运行。在这种情况下你写:
if obj is TStringList then
....
如果你需要知道一个实例是什么类,那么你应该使用ClassType
。如果要在TClassList
实例中维护类列表,则可以使用ClassType
来获取实例的元类。