在 Delphi 中,TDictionary 是一个泛型字典类,用于存储键值对。要遍历 TDictionary,你可以使用其内置的枚举器(enumerator)。TDictionary 提供了一个 GetEnumerator 方法,该方法返回一个可以用于遍历字典中所有键值对的枚举器。

以下是一个遍历 TDictionary<TKey, TValue> 的示例:

uses
  System.SysUtils, System.Generics.Collections;

procedure TraverseDictionary;
var
  Dict: TDictionary<string, Integer>;
  Pair: TPair<string, Integer>;
begin
  // 创建并初始化字典
  Dict := TDictionary<string, Integer>.Create;
  try
    Dict.Add('One', 1);
    Dict.Add('Two', 2);
    Dict.Add('Three', 3);

    // 使用 for-in 循环和枚举器遍历字典
    for Pair in Dict do
    begin
      WriteLn('Key: ', Pair.Key, ', Value: ', Pair.Value);
    end;
  finally
    // 释放字典
    Dict.Free;
  end;
end;

begin
  TraverseDictionary;
  ReadLn; // 暂停以查看输出
end.

在这个示例中,我们首先创建了一个 TDictionary<string, Integer> 实例,并向其中添加了一些键值对。然后,我们使用一个 for-in 循环来遍历字典。在循环中,Pair 变量是一个 TPair<string, Integer> 类型的实例,它表示字典中的一个键值对。通过 Pair.KeyPair.Value,我们可以访问键和值,并将它们输出到控制台。

另外,你也可以直接使用 TDictionaryKeysValues 属性来分别获取所有的键和值,并遍历它们:

var
  Key: string;
  Value: Integer;
begin
  // ...(字典的创建和初始化部分与上面相同)

  // 遍历所有的键
  for Key in Dict.Keys do
  begin
    WriteLn('Key: ', Key);
  end;

  // 遍历所有的值
  for Value in Dict.Values do
  begin
    WriteLn('Value: ', Value);
  end;

  // ...(字典的释放部分与上面相同)
end;

但是,请注意,当你只遍历键或值时,可能会失去键和值之间的关联。因此,在大多数情况下,使用 for-in 循环和 TPair 是更好的选择,因为它同时提供了键和值的信息。

posted on 2024-11-29 14:59  del88  阅读(325)  评论(0)    收藏  举报