1

如何将 TDictionary 作为可选参数传递?

例如,如果我在类中使用它不起作用:

TMyDict = TDictionary<String, String>;

TTest = class
   procedure Render(Id: Integer; Name: String = ''; Variables: TMyDict = nil); //error
end;

我不知道为什么,但这段代码工作正常。但是我不能使用它。

procedure Render(Id: Integer; Name: String = ''; Variables: TMyDict = nil);
begin
   // Do something...
end;

有什么建议么?

4

1 回答 1

5

您的实现声明缺少该类。它应该是:

procedure TTest.Render(Id: Integer; Name: String = ''; Variables: TMyDict = nil);
//        ^^^^^^
begin
   // Do something...
end;

您也可以考虑在实现中省略默认值。

这是一个完整的编译程序,以说明这一点:

program SO16740725;
{$APPTYPE CONSOLE}

uses
  Generics.Collections;

type
  TMyDict = TDictionary<string, string>;

type
  TTest = class
    procedure Render(Id: Integer; Name: string=''; Variables: TMyDict=nil);
  end;

procedure TTest.Render(Id: Integer; Name: string; Variables: TMyDict);
begin
   // Do something...
end;

begin
end.
于 2013-05-24T17:43:23.867 回答