为什么我应该避免在应用程序代码中使用ClassType?

时间:2013-06-03 11:50:08

标签: delphi oop

Delphi在线文档说

  

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

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

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

1 个答案:

答案 0 :(得分:17)

给出这个建议的最明显的原因是想要编写这样的代码的程序员:

if obj.ClassType = TStringList then
  ....

如果对象的类为TStringList,则该条件仅评估为true。但是,通常您会希望条件代码为TStringList和任何后代运行。在这种情况下你写:

if obj is TStringList then
  ....

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