Meinst du in etwa so? (Müsste man aber noch ausbauen)
Delphi-Quellcode:
type
TGeneric = record
public
class function Max<T>(List: TEnumerable<T>): T; static;
end;
class function TGeneric.Max<T>(List: TEnumerable<T>): T;
begin
var comparer := IComparer<T>(TComparer<T>._Default);
Result := Default(T);
for var item in List do
if comparer.Compare(Result, item) < 0 then
Result := item;
end;
Da ist nen kleiner aber subtiler Bug drin: wenn dein TEnumerable<T> die Zahlen -1, -3 und -7 enthält, dann würde es inkorrekterweise 0 als Max ausgeben und nicht -1.
Result muss mit dem ersten Wert aus der Sequenz initialisiert werden und ab da muss verglichen werden. Außerdem brauchts ein Verhalten, wenn die Sequenz leer ist (in Spring gibt's genau wie in .NET ne
Exception)