Class 如何在Delphi中声明类方法的类型?

Class 如何在Delphi中声明类方法的类型?,class,delphi,methods,Class,Delphi,Methods,例如,如何声明类过程的类型 type TTest = class procedure Proc1; class procedure Proc2; class procedure Proc3; static; end; TProc1 = procedure of object; TProc2 = ???; TProc3 = ???; 类方法仍然有一个Self指针。它是类而不是实例 这样做的一个有趣的结果是,它提供了一种实现事件处理程序的方法,而无需实

例如,如何声明类过程的类型

type
  TTest = class
    procedure Proc1;
    class procedure Proc2;
    class procedure Proc3; static;
  end;

  TProc1 = procedure of object;
  TProc2 = ???;
  TProc3 = ???;
类方法仍然有一个
Self
指针。它是类而不是实例

这样做的一个有趣的结果是,它提供了一种实现事件处理程序的方法,而无需实例化对象。例如,您可以使用从未实例化为全局
应用程序
对象提供事件处理程序的类的类方法

TProc3 = procedure;
静态类方法没有
Self
指针。它与普通程序类型兼容

静态类方法可以作为全局作用域过程的替代方法。这确实允许您将此类方法放在类的名称空间中,从而避免污染全局名称空间

在实现不调用虚拟类方法的静态类方法时要小心。此类调用在编译时静态绑定,因为缺少
Self
指针意味着运行时不可能进行动态多态绑定。令人失望的是,编译器没有警告您这一点,因此您需要保持机智

TProc3 = procedure;