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