随笔 - 809  文章 - 0 评论 - 144 阅读 - 770万

在 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   del88  阅读(118)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示