在 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.Key
和 Pair.Value
,我們可以訪問鍵和值,並將它們輸出到控制檯。
另外,你也可以直接使用 TDictionary
的 Keys
和 Values
屬性來分別獲取所有的鍵和值,並遍歷它們:
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
是更好的選擇,因為它同時提供了鍵和值的資訊。