record struct für kleine Werte
- Matt
Für kleine, unveränderliche Werte ist record bequem, allokiert aber auf dem Heap. Bei einem Typ, der millionenfach durch eine Schleife läuft, ist das spürbar.
public readonly record struct Koordinate(int X, int Y);
Damit bekommt man Wertsemantik, Equals, GetHashCode, ToString und Dekonstruktion, ohne dass eine Instanz auf dem Heap landet. Das readonly sollte dabeistehen, sonst erzeugt der Compiler an manchen Stellen defensive Kopien.
Die Faustregel bleibt die alte für Strukturen: klein halten, etwa bis 16 Byte, und nicht veränderlich machen. Ein großer record struct ist langsamer als eine Klasse, weil er bei jeder Übergabe kopiert wird.