2

我正在尝试创建一个不区分大小写的字符串列表。

CreateList方法让我传入一些重载:

  • TComparison<System.string>
  • IComparer<System.string>

我试着这样使用TStringComparer.OrdinalIgnoreCase

var
  List: IList<string>;
begin
  List := TCollections.CreateList<string>(TStringComparer.OrdinalIgnoreCase);
end;

但是由于这个比较器没有实现上述任何不能编译的类/接口;我得到:

E2250 没有TCollections.CreateList<System.string>可以使用这些参数调用的重载版本

spring4d 框架中是否有其中一个可用的实现?

4

2 回答 2

4

你需要写括号:

var
  List: IList<string>;
begin
  List := TCollections.CreateList<string>(TStringComparer.OrdinalIgnoreCase());
end;

以后的编译器版本可以在没有的情况下解决它。

于 2015-05-19T07:18:21.980 回答
1

仔细检查类型后TComparison

type
  TComparison<T> = reference to function(const Left, Right: T): Integer;

答案是相当琐碎的:

var
  List: IList<string>;
begin
  List := TCollections.CreateList<string>(AnsiCompareText);
end;
于 2015-05-18T17:07:41.043 回答