Delphi 在线文档说
"Avoid using ClassType in application code".
但是有很多地方需要类类型。例如,当程序使用 System.Contnrs 类时。 TClassList ,我需要一个对象的 ClassType 将其传递到 IndexOf() 的参数中。
ClassType 文档中提出此建议的原因是什么?
最佳答案
给出此建议的最明显原因是针对想要编写如下代码的程序员:
if obj.ClassType = TStringList then
....
仅当对象的类是 TStringList
时,该条件才会评估为 true。但是,您通常希望为 TStringList
及其任何后代运行条件代码。在这种情况下,你可以这样写:
if obj is TStringList then
....
如果您需要知道实例是什么类,那么您应该使用ClassType
。如果您在 TClassList
实例中维护类列表,则可以随意使用 ClassType
来获取实例的元类。
关于delphi - 为什么应该避免在应用程序代码中使用 ClassType?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16896039/