Delphi 中的实例参考?

发布于 2024-11-25 22:56:27 字数 48 浏览 2 评论 0原文

Delphi 中 C++ 中“this”的等价物是什么?您能举一些它的使用示例吗?

What's the Delphi equivalent of 'this' in C++? Could you please give some examples of its use?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

薔薇婲 2024-12-02 22:56:27

在delphi中Self相当于这个。它也可以按照此处中的描述进行分配。

In delphi Self is the equivalent of this. It is also assignable as described in here.

川水往事 2024-12-02 22:56:27

在大多数情况下,您不应在方法中使用 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 实例。它将检查列表中所有项目的情况。

In most cases, you should not use self in the methods.

In fact, it's like if there was an implicit self. prefix when you access the class properties and methods, within a class method:

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;

The self is to be used when you want to specify the current object to another method or object.

For instance:

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;

this above code will add an item to the TStrings list, with List.Objects[] pointing to the TMyClass instance. And it will check this has been the case for all items of the List.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文