我应该在 Delphi 中写入对所有字段的析构函数的析构函数调用吗?

Should I write in the destructor call to all it's fields' destructors in Delphi?

TB = Class;
TC = Class;
TA = Class
  Strict Private
      B : TB;
      C : TC;

  Public
      Constructor Create;
      Destructor  Destroy; Override;
      //something
End;

//something 

Constructor TA.Create;
B := TB.Create;
C := TC.Create;
End;

Destructor TA.Destroy;
B.Free;//needed?
C.Free;//needed?
End;

是否需要调用 Free class' 析构函数中的所有字段,或者不需要但冗长是一种很好的风格?

在您提供的示例代码中,您确实必须销毁您创建的对象。这是一般规则。

如果您的对象继承自 TComponent,并且当您调用 constructor 传递所有者时,则该所有者负责销毁该组件。但是你可以 - 如果你愿意 - 也可以在你的 destructor.

中释放它

如果创建对象是因为它们被分配给类型为 interface 的变量(由对象实现),那么您不应该销毁(释放)它。这是因为接口是引用计数的,如果没有更多引用,对象会自动释放。当然,该对象必须正确实现引用计数(TInterfacedObject 是一个基数 class,如果您不想为引用计数而烦恼,您可以将其用作祖先。但那是另一回事了)。