我想下面的代码来创建一个不区分大小写的IList创建和使用不敏感的IList
procedure TForm1.ListButtonClick(Sender: TObject);
var
MyList: IList<string>;
begin
MyList := TCollections.CreateList<string>(TStringComparer.OrdinalIgnoreCase());
MyList.AddRange(['AAA', 'BBB', 'CCC']);
Memo1.Lines.Add(MyList.IndexOf('aaa').ToString);
end;
然而,呼叫的IndexOf总是返回-1。这应该工作吗?任何建议感激。
更新:它看起来像被用于排序的比较器,但不适合的IndexOf。一个单独的“EqualityComparer”用于IndexOf,所以问题变成了如何改变它?
UPDATE2:我只是想补充到约翰的回答,该列表就可以像这样创建:
MyCIList := TCaseInsensitiveList<string>.Create(
TStringComparer.OrdinalIgnoreCase(),
TStringComparer.OrdinalIgnoreCase());
太好了,我只是在需要这个功能。找不到你提到的spring4d spring4d 1.2.1修补程序,但是2017年1月3日发布的spring 1.2已经工作了。 –