我来自vb / c#背景,我很难理解下面部分代码的含义,特别是'self.fColConsignments.Add'
TConsignment = class(TCollectionItem)
constructor Create(Collection : TCollection); override;
...
function TIFCSUMMsg.AddConsignment: TConsignment;
begin
result := TConsignment(self.fColConsignments.Add);
end;
答案 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版本上。)