If there are no requirements for polymorphism and events, then structure type is a good candidate instead of a class.
If the container types make use of inheritance and polymorphism, then using class is preferable.
A structure can be preferable when:
- You have a small amount of data and simply want the equivalent of the UDT (user-defined type) of previous versions of Visual Basic
- You perform a large number of operations on each instance and would incur performance degradation with heap management
- You have no need to inherit the structure or to specialize functionality among its instances
- You do not box and unbox the structure
- You are passing blittable data across a managed/unmanaged boundary
A class is preferable when:
- You need to use inheritance and polymorphism
- You need to initialize one or more members at creation time
- You need to supply an unparameterized constructor
- You need unlimited event handling support