为什么THashedStringList不会忽略重复?

Pav*_*van 7 delphi delphi-2009

我有以下代码:

var
  sl: THashedStringList;
begin
  sl:= THashedStringList.Create;
  sl.Duplicates := dupIgnore;
  sl.Add('12345');
  sl.Add('12345');
  sl.Add('12345');
  sl.Add('12345');
  sl.Add('12345');
  sl.Add('12345');
  sl.Add('12345');
  ShowMessage(IntToSTr(sl.Count));
end;
Run Code Online (Sandbox Code Playgroud)

但是当我看到sl.Count它时,它给了我7.这是什么错误?

mgh*_*hie 15

您需要将该Sorted属性设置为TRUE才能使列表忽略重复项.该属性是继承自的TStringList,如果您查看文档,TStringList.Duplicates您会发现:

注意:如果列表未排序,则重复项不执行任何操作.

  • 这是因为THashedStringList从TStringList继承了它的Duplicates属性,以及它对Add方法的行为.在这个Pavan的例子中,THashedStringList没有什么特别之处. (4认同)