什么.Add在构造函数中使用时的意思?

时间:2011-05-04 16:25:30

标签: delphi

我来自vb / c#背景,我很难理解下面部分代码的含义,特别是'self.fColConsignments.Add'

TConsignment = class(TCollectionItem)
constructor Create(Collection : TCollection); override;

...

function TIFCSUMMsg.AddConsignment: TConsignment;
begin
  result := TConsignment(self.fColConsignments.Add);
end;

4 个答案:

答案 0 :(得分:7)

如果你的背景是C#,不要错过解释那一行:

result := TConsignment(self.fColConsignments.Add);

它只是一个类型转换而不是构造函数调用。在C#中它看起来像:

result = (TConsignment)self.fColConsignments.Add;

答案 1 :(得分:2)

据推测,fcolConsignments是TIFCSUMMsg实例(Self)拥有的集合。添加将新项添加到集合并返回引用作为结果。然后将结果转换为TConsignment以适合AddConsignment方法的结果类型。

答案 2 :(得分:2)

self.fColConsignments.Add可能会在fColConsignments中添加一个新项目,该项目必须是集合或类似物品,并将其返回。但是声明的返回类型可能比返回的实际对象更通用,然后使用TConsignment(object)应用类型转换。

答案 3 :(得分:1)

示例中的代码不是构造函数

在C ++ / C#/ Java /(在这里放置你的C语言),构造函数是无名方法。所以:

class TFoo {
TFoo() { // do something }
}

....
{
   TFoo myFoo;
   myFoo = new TFoo()
    .....
}

这是这类语言的典型构造。这是 Delphi的工作原理 Delphi中的构造函数有名称。惯例是它们被称为.Create
它们可以是静态的或虚拟的(就像任何方法一样)。

上面的代码可以转换为:

TFoo = class 
  constructor Create();
end;
...
constructor TFoo.Create()
begin
  // Do something;
end;

....
// Creating an object
var
  myFoo: TFoo;
begin
  myFoo := TFoo.Create();  
  ...
end;

您举例说明的代码不是构造函数,而是构造函数 有点类型。 您可以获得有关此内容的更多信息(类型转换器和构造函数)
在Delphi语言指南(或Object Pascal语言指南,取决于 在您可用的Delphi版本上。)