Wegen solcher Probleme gibt es eine grundlegende Übereinkunft unter .Net-Programmierern:
mutable value types are evil. Wenn man Mutable Structs einfach ganz aus dem Gedächtnis streicht, dann verschwindet fast jeder Unterschied zwischen Structs und Klassen und all die damit verbundenen Probleme. Ja, dann kann man Structs überhaupt erst einmal ausblenden und sollte sich wirklich erst bei der Performance-Messung fragen, ob eine Immutable Class als Value Type nicht doch noch ein paar ms rausholen könnte.
Aber solange die Allokationen nicht stören (messen, messen, messen
!), ist eine ganz normale Mutable Class natürlich auch eine Lösung
.