8

Delphi 在线文档说

“避免在应用程序代码中使用ClassType ”。

然而,有很多地方需要类类型。例如,当程序使用 System.Contnrs 类时。TClassList,我需要一个对象的 ClassType 来将它传递给 IndexOf() 的参数。

ClassType 文档中此建议背后的原因是什么?

4

1 回答 1

18

给出此建议的最明显原因是针对想要编写如下代码的程序员:

if obj.ClassType = TStringList then
  ....

只有当对象的类是 时,该条件才会评估为真TStringList。但是,通常您会希望条件代码为TStringList任何后代运行。在这种情况下,你写:

if obj is TStringList then
  ....

如果您需要知道实例是什么类,那么ClassType您应该使用什么类。如果您要维护实例中的类列表TClassList,则可以随意使用ClassType来获取实例的元类。

于 2013-06-03T11:53:41.993 回答