Hmm ...
Ich würde die Garbage Collection nicht als Argument für/gegen die Verwendung von Structs gegenüber Klassen verwenden. Der verwaltete Heap funktioniert ähnlich wie ein Stack - das Erstellen eines Objekts setzt es einfach an den Anfang des Heaps, was fast so schnell ist wie die Zuweisung auf dem Stack. Wenn ein Objekt kurzlebig ist und einen GC-Zyklus nicht überlebt, ist die Deallokation außerdem kostenlos, da der GC nur mit Speicher arbeitet, der noch zugänglich ist. (Suchen Sie auf MSDN, es gibt eine Reihe von Artikeln über die .NET-Speicherverwaltung, ich bin nur zu faul, sie zu suchen).
Wenn ich eine Struktur verwende, ärgere ich mich meistens darüber, dass ich das getan habe, weil ich später feststelle, dass eine Referenzsemantik die Dinge etwas einfacher gemacht hätte.
Wie auch immer, die vier Punkte im oben genannten MSDN-Artikel scheinen ein guter Leitfaden zu sein.