В большинстве случаев не следует использовать self
в методах.
На самом деле, это похоже на то, что при доступе к свойствам и методам класса внутри класса существовал неявный префикс self.
.Метод:
type
TMyClass = class
public
Value: string;
procedure MyMethod;
procedure AddToList(List: TStrings);
end;
procedure TMyClass.MyMethod;
begin
Value := 'abc';
assert(self.Value='abc'); // same as assert(Value=10)
end;
self
должен использоваться, если вы хотите указать текущий объект для другого метода или объекта.
Например:
procedure TMyClass.AddToList(List: TStrings);
var i: integer;
begin
List.AddObject(Value,self);
// check that the List[] only was populated via this method and this object
for i := 0 to List.Count-1 do
begin
assert(List[i]=Value);
assert(List.Objects[i]=self);
end;
end;
Приведенный выше код добавит элемент в список TStrings
, а List.Objects [] будет указывать на экземпляр TMyClass.И он проверит, что это относится ко всем пунктам списка.