Delphi-Quellcode:
function TMyObjectList<T>.Search(const predicate: TPredicate<T>): T;
begin
for Result in Self do
if predicate(Result) then
Exit;
end;
TPredicate<T>
ist in SysUtils definitiert.
In der Funktion fehlt noch eine Zeile:
Delphi-Quellcode:
function TMyObjectList<T>.Search(const predicate: TPredicate<T>): T;
begin
for Result in Self do
if predicate(Result) then
Exit;
Result := nil // <<< Das muß rein sonst ist jede Suche erfolgreich mit dem letzten Element!
end;
Hasse recht, sofern kein constraint auf T liegt, muss es allerdings
Result := Default(T);
heißen.