【发布时间】:2012-01-02 15:57:02
【问题描述】:
我在一个非常昂贵的课程中进行了某项操作。 (完全运行大约需要 8 秒)所以,现在我决定它应该在程序开始时在“初始化”屏幕期间运行。但是,我在 Delphi 中找不到任何地方表明存在静态字段之类的东西。
我基本上需要做的是加载一个记录列表并在程序的整个生命周期中保持它们的活力。在 Delphi 中执行此操作的最佳方法是什么?
我会在 C# 中非常简单地做到这一点:
class Foo{
static List<...> Bar;
}
但是在 Delphi 中,我没有看到任何用于创建静态字段的内容。我看到的只是用于创建静态方法的class 关键字
【问题讨论】:
-
在现代 Delphi 中,您可以使用
class var来获得等效的静态成员字段,但在 Delphi 7 中,您需要使用全局变量。 -
class方法和static方法相似,但略有不同。class方法接收调用它们的类作为隐式参数,类似于实例方法接收实例的方式。static方法没有接收到这样的参数。旧版本的 Delphi 只有class方法,但我认为新版本也有static方法以提高 .net 兼容性。 -
@CodeInChaos 我不知道distinction。这是相当深奥的,因为类方法的
Self参数的等价物很容易在static方法中获得。但是使用Self确实可以避免重复自己。附言您是正确的,D7 没有class var,我正要在您的原始答案中对此发表评论,但您的宽限期编辑清除了它! -
用静态模拟非虚拟类方法需要引入一个额外的参数,因为
self参数指向调用该方法的类,它可能是一个子类。虚拟类方法根本没有直接的映射。自从我迁移到 C# 后,我有时会错过类方法,而 C# 没有它们。 -
@code 啊,我没有想过从派生类甚至实例方法中调用类方法。顺便别忘了在 cmets 中@收件人
标签: delphi oop static delphi-7