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

标签 delphi oop

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/

相关文章:

delphi - 自动检测应用程序 "Type"

WordPress - 管理菜单 - 子子页面?

java - 对象在实例化后不做任何事情

delphi - 我如何将 WNDPROC 转换为 TWndMethod

delphi - Delphi中的圆角矩形

javascript - 在TS中为长类定义动态装饰器而无需重新定义所有方法的方法

PHP5 AutoLoader SPL_AutoLoad 失败

php - 验证构造函数参数,确保参数具有正确的类型

arrays - Delphi:如何从类中引用数组

delphi - 代码更改后如何获取组件原始(设计)的Width属性?