“E2250:在未输入的通用标识符上没有...的重载版本”

问题描述 投票:0回答:1

我的代码(简化为下面的代码片段)无法编译。 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.
delphi generics delphi-xe4
1个回答
2
投票

正如对此问题的评论中已经指出的,错误的原因是一个微小的拼写错误。而不是

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

应该是

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

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

© www.soinside.com 2019 - 2024. All rights reserved.