1

使用指针而不是引用类有什么好处吗?例如:

TMyClass = class(TObject);

procedure Method;
var
    pmc : ^TMyClass;
    //instead of
    mc : TMyClass;       
begin
   pmc := @ObjectMyClass;
   //instead of
   mc := ObjectMyClass;

   if pmc.Enabled then
      blablabla;
   //instead of
   if mc.Enabled then 
     blebleble;           
end;
4

1 回答 1

4

Delphi 中的所有类都通过引用传递/使用,因此添加另一个间接级别不会添加任何内容。

这不适用于始终按值传递/使用的记录。可以通过声明指针类型通过引用来使用这些,并通过使用指针类型或 var 关键字(它为您处理指针函数参数混乱)将它们传递给函数。

(Ctrl+F 表示“类”) http://docwiki.embarcadero.com/RADStudio/XE3/en/Pointers_and_Pointer_Types

如果您熟悉 C/C++,^TMyClass 相当于:

**MyClass

这在某些情况下很有用,例如当您想通过传递指向该函数的指针的指针来使用函数编辑指针时,但我怀疑这些构造是否可以使用 Delphi。

于 2013-04-03T18:54:24.293 回答