小编wik*_*icz的帖子

C#中重载的构造函数类似于Delphi(具有多个名称)

我试图将一些代码从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)

c# delphi constructor fxcop overloading

4
推荐指数
1
解决办法
617
查看次数

标签 统计

c# ×1

constructor ×1

delphi ×1

fxcop ×1

overloading ×1