在我的工作场所,我们有一些class function
s 引用的代码Self
,如果对象未初始化,则有效地创建潜在的访问冲突。Self
类方法中更改的含义是否为引用类而不是对象?
我认为这是有效的唯一原因是因为Self
引用另一个class function
而不是常规方法。
我创建了以下测试类:
constructor TTest.Create;
begin
FTest := 'Hej';
end;
procedure TTest.GoTest;
begin
ShowMessage(FTest);
end;
class procedure TTest.Test;
begin
Self.GoTest;
end;
但是,编译它会引发错误:
[dcc32 Error] Unit1.pas(51): E2076 This form of method call only allowed for class methods or constructor
我还测试了直接引用 FTest,这给出了另一个错误:
[dcc32 Error] Unit1.pas(51): E2124 Instance member 'FTest' inaccessible here
但是我想知道,Self
在类方法中是否有可能存在潜在危险的情况。
我知道,引用全局对象并假设它们存在总是不好的。