1

我正在使用类构造函数创建一个类

TStaticDynSettings = class
public
  class constructor create;
  class destructor destroy;
  class procedure Reload;
end;

除了create和destroy之外,类中的所有其他方法都需要是类方法吗?

我确定所有变量都必须是类 var,否则自动初始化将不起作用。

调用该过程有什么区别?..

var StDyn : TStaticDynSettings;`
StDyn.Reload;

TStaticDynSettings.Reload;

4

1 回答 1

3

1 - 如果您不打算创建对象实例,TStaticDynSettings您可以使用 3 种形式中的任何一种:

type
  TStaticDynSettings = class
  public
    procedure Reload1;
    class procedure Reload2;
    class procedure Reload3; static;
  end;

调用示例:

procedure Call1;
var Instance: TStaticDynSettings;

begin
  Instance.Reload1;
end;

procedure Call2;
begin
  TStaticDynSettings.Reload2;
end;

procedure Call3;
begin
  TStaticDynSettings.Reload3;
end;

区别在于传入的隐藏参数Reload1Reload2方法,而不是传入Reload3

hidden 参数是对对象实例的引用Reload1(并且没有使用,因为您没有创建对象实例)和类引用Reload2(在您的情况下这可能也是不必要的,假设在编译时已知类引用)。

第一种形式 ( Reload1) 具有误导性,因为它假定使用对象引用,因此应避免使用(尽管它有效)。

Reload3如果您不使用在编译时未知的类引用,则最好使用第三种形式 ( )。

2 - 没有区别(不计算在第一种情况下使用不必要的对象变量的开销)。

于 2013-01-02T08:15:51.560 回答