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

Delphi 如何将TDictionary作为可选参数传递?,delphi,delphi-xe2,Delphi,Delphi Xe2,如何将TDictionary作为可选参数传递 例如,如果我在类中使用它,则不起作用: TMyDict = TDictionary<String, String>; TTest = class procedure Render(Id: Integer; Name: String = ''; Variables: TMyDict = nil); //error end; 有什么建议吗?您的实现声明缺少类。应该是: procedure TTest.Render(Id: Integ

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

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

TMyDict = TDictionary<String, String>;

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

有什么建议吗?

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

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

您也可以考虑省略实现中的默认值。< /P> 下面是一个完整的编译程序,以说明这一点:

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.

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

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

您也可以考虑省略实现中的默认值。< /P> 下面是一个完整的编译程序,以说明这一点:

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.

您有一行代码标记为错误;请告诉我你犯了什么错误。复制并粘贴错误消息。你说你有很好的代码,但是你说你不能使用它。如果它工作正常,是什么阻止你使用它?将来,当你说“不工作”时,解释什么是“不工作”的意思。我们从这里看不到你的屏幕,也看不到你的想法,所以如果你告诉我们你已经知道它是如何工作的,那就容易多了。此外,当你说错误时,请解释这意味着什么,如果你收到错误信息,请包括确切的错误信息。如果您确实向我们提供了我们可以提供的信息,那么帮助您就容易多了。谢谢。您有一行代码标记为错误;请告诉我你犯了什么错误。复制并粘贴错误消息。你说你有很好的代码,但是你说你不能使用它。如果它工作正常,是什么阻止你使用它?将来,当你说“不工作”时,解释什么是“不工作”的意思。我们从这里看不到你的屏幕,也看不到你的想法,所以如果你告诉我们你已经知道它是如何工作的,那就容易多了。此外,当你说错误时,请解释这意味着什么,如果你收到错误信息,请包括确切的错误信息。如果您确实向我们提供了我们可以提供的信息,那么帮助您就容易多了。谢谢。我的首选是保持实现100%相等,因此包含默认值以避免混淆…我的首选是保持实现100%相等,因此包含默认值以避免混淆。。。