der Grund, warum ich .get überschreiben "wöllte" liegt darin, daß ich in tmylist oft Konstrukte wie diesen gebrauche:
Dann solltest du dir sowas besser abgewöhnen?
Man könnte sich ein TryGet basteln (ähnlich dem
TCriticalSection.TryEnter oder
TryStrToInt)
Und bezüglich wilder Typumwandlungen ... da haben die Generics ein paar nette Vorteile.
Delphi-Quellcode:
// statt
if MyList.Get(aindex) <> nil then
Result := TXyz(MyList.Get(aindex)).einwert;
// lieber
if MyList.TryGet(aindex, X) then
Result := X.einwert;
// oder das, was du eigentlich wissen/prüfen willst
if MyList.Exists(aindex) then
Result := MyList.Get(aindex).einwert;
Delphi-Quellcode:
type
TXyzList = class(TList<TXyz>)
function TryGet(idx: Integer; out obj: TXyz);
end;
function TXyzList.TryGet(idx: Integer; out obj: TXyz);
begin
Result := Cardinal(idx) < Cardinal(Count);
if Result then
obj := Get(idx);
end;
var
X: TXyz;