'E2250:错误类型的通用标识符上没有...的重载版本

时间:2015-04-10 12:22:57

标签: delphi generics delphi-xe4

我的代码(缩减为下面的代码段)无法编译。 Delphi XE4的编译器返回了以下消息:E2250: There is no overloaded version of 'Sort' that can be called with these arguments

program Project1;

{$APPTYPE CONSOLE}

uses
  System.Generics.Collections;

type
  TSomeGenericType<TKey, TData> = class (TObject);

function GetSortedArray: TArray<TSomeGenericType<Integer, TObject>>;
begin
  // ... omitted code to initialize Result
  TArray.Sort<TSomeGenericType<Integer, TObject>(Result); 
  // !!! E2250: There is no overloaded version of 'Sort' that can be called with these 
  // arguments
end;

begin
end.

1 个答案:

答案 0 :(得分:2)

正如在对这个问题的评论中已经说明的那样,错误的原因是一个小小的错字。而不是

TArray.Sort<TSomeGenericType<Integer, TObject>(Result); 

应该是

TArray.Sort<TSomeGenericType<Integer, TObject>>(Result); 

我认为,解析器应该注意之前检查是否存在具有兼容签名的函数。

PS:特别感谢@DavidHeffernan的耐心。我愿意学习如何提出好的问题,但我相信它是在开始时提出一些不好的问题来实践的。 ;)