Хмм ...
Я бы не использовал сборку мусора в качестве аргумента за / против использования структур против классов. Управляемая куча работает во многом как стек - создание объекта просто помещает его на вершину кучи, что почти так же быстро, как и размещение в стеке. Кроме того, если объект недолговечен и не выдерживает цикл GC, освобождение происходит бесплатно, поскольку GC работает только с памятью, которая все еще доступна. (Поищите в MSDN, есть серия статей по управлению памятью .NET, мне просто лень копаться в них).
Большую часть времени я использую структуру, я начинаю пинать себя за это, потому что позже я обнаруживаю, что наличие ссылочной семантики сделало бы вещи немного проще.
В любом случае, эти четыре пункта в статье MSDN, опубликованной выше, кажутся хорошим ориентиром.