Einzelnen Beitrag anzeigen

Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

Wird gerne vergessen: Gleichheit bei Collections von Records

  Alt 6. Feb 2019, 10:10
Eine ganz dumme Frage:

Angenommen man hat eine Collection (List, Dictionary, …) von Records, z.B. TMyRecord . Wenn man bei diesen Collections keinen IEqualityComparer<TMyRecord> angibt dann wird ein Default-Comparer genommen der stumpf die Bytes im Speicher vergleicht.

Bei Records mit Padding kann so eine Gleichheitsprüfung natürlich funktionieren, muss aber nicht. Das Problem: Hier wird im Code gerne vergessen bei solchen Collections auch den Comparer anzugeben. Unit-Tests decken das meist auch nicht auf da hier Records frisch angelegt werden, die Padding-Bytes alle Null sind und alles klappt.

In den Unit-Tests kann man natürlich explizit hingehen, die Padding-Bytes manuell mit Mustern beschreiben und schauen ob dann noch alles klappt - Aber da muss man auch erst einmal dran denken!


Gibt es einen Trick? Oder hilft hier nur Haue?
  Mit Zitat antworten Zitat