In C# use structs over classes where possible
What's the reason for this being a win?
My experience is mainly with C++, so this sounds very foreign.
C++ lets any type be passed by reference or by value, or to be heap allocated or stack allocated.
C# instead has "reference types" (classes) and "value types" (structs, primitives, etc). Reference types are always heap allocated, passed by reference (pointer), garbage collected, etc. Value types are passed by value by default.