Aber ich erwarte eben von einer Liste, dass ich mit IndexOf
den Index des Elements in der Liste bekomme,
Du wusstest nicht, das der 'Comparer' auch für die Definition von 'Gleichheit' verwendet wird.
Ich halte das für einen Designfehler, und ich glaube, Du auch. Denn ein *TComparer* vergleicht nur und wird für das Sortieren verwendet.
In einer TSortedObjectList (wenn es das gäbe), würde IndexOf (weil mit Binärsuche implementiert) allerdings den Comparer verwendetn. Vielleicht wurde das deshalb so umgesetzt.
Nur mal so: Der Comparer definiert eine Ordnung und man muss sich einfach auch überlegen, wann zwei Objekte gleich, d.h. identisch sind.
Identisch bedeutet auch 'austauschbar', und dann reicht die erste Implementierung eben nicht aus.