我试图将一些代码从Delphi移植到C#,我发现了一个无法以合理的方式实现的构造,同时遵守.NET Framework设计指南(我在问题的最后解决).
显然,C#,Java,C++(以及许多其他语言)提供了方法/构造函数重载的含义,但Delphi构造函数还可以有多个名称.这样就可以编写直接代表意图的代码:
var
Data, ParI, ParD, Locl: TDataElement;
begin
Data := TDataElement.Create('Element');
ParI := TDataElement.CreateParam('IntElement', 22);
ParD := TDataElement.CreateParam('DblElement', 3.14);
Locl := TDataElement.CreateLocal('LocalElement');
// ... use the above objects ...
end;
Run Code Online (Sandbox Code Playgroud)
简化代码如下:
unit DataManager;
interface
TDataElement = class
FName: string;
FPersistent: Boolean;
public
constructor Create(AName: string);
constructor CreateParam(AName: string; DefaultInt: Integer); overload;
constructor CreateParam(AName: string; DefaultDouble: Double); overload;
constructor CreateLocal(AName: string);
property Name: string read FName;;
property Persistent: Boolean read FPersistent;
end;
implementation
constructor TDataElement.Create(AName: string);
begin
FName := …Run Code Online (Sandbox Code Playgroud)