Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
Delphi 10.4 Sydney
|
AW: Assign für TDictionary implementieren
4. Sep 2019, 14:12
oder den generischen parameter umnennen, ich hab das mal so gelöst gehabt: map<tkey,t>
Danke, so mache ich es.
Übrigens die Schleife über die Keys und dann das Lookup jedes Wertes ist denkbar inperformant. Dann doch lieber direkt mit einer TPair<TKey,TValue> variable per for in über das Dictionary.
Hast Du ein kurzes Beisipel dafür?
Delphi-Quellcode:
type
TMyDictionary<TKey, T> = class(TDictionary<TKey, T>)
public
procedure Assign(Source: TObject); virtual;
end;
procedure TMyDictionary<TKey, T>.Assign(Source: TObject);
var
LPair: TPair<TKey, T>;
LSourceDictionary: TMyDictionary<TKey, T>;
begin
if Source is TMyDictionary<TKey, T> then
begin
Self.Clear // ohne Clear -> kein richtiges Assign
LSourceDictionary := TMyDictionary<TKey, T>(Source);
for LPair in LSourceDictionary do
begin
Self.Add(LPair.Key, LPair.Value);
end;
end
end;
Geändert von TiGü ( 4. Sep 2019 um 14:58 Uhr)
Grund: Hinweis von Stevie eingepflegt!
|
|
Zitat
|