MSDN says that you should use structs when you need lightweight objects. Are there any other scenarios when a struct is preferable over a class?
Some people might have forgotten that:
- structs can have methods.
- structs cannot be inherited.
I understand the technical differences between structs and classes, I just don't have a good feel for when to use a struct.
As @Simon said, structs provide "value-type" semantics so if you need similar behavior to a built-in data type, use a struct. Since structs are passed by copy you want to make sure they are small in size, about 16 bytes.
I think the best answer is simply to use struct when what you need is a collection of properties, class when it's a collection of properties AND behaviors.