我正在尝试以下代码来创建不区分大小写的 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。IndexOf使用了一个单独的“EqualityComparer”,那么问题就变成了如何改变它?
Update2:我只是想添加到 Johan 的答案中,然后可以像这样创建列表:
MyCIList := TCaseInsensitiveList<string>.Create(
TStringComparer.OrdinalIgnoreCase(),
TStringComparer.OrdinalIgnoreCase());