.NET Framework FAQ : What is the difference between a Struct and a Class ?
The struct type is suitable for representing lightweight objects such as
Point, Rectangle, and Color. Although it is possible to represent a point as a
class, a struct is more efficient in some scenarios. For example, if you declare
an array of 1000 Point objects, you will allocate additional memory for
referencing each object. In this case, the struct is less expensive.
When you create a struct object using the new operator, it gets created and
the appropriate constructor is called. Unlike classes, structs can be
instantiated without using the new operator. If you do not use new, the fields
will remain unassigned and the object cannot be used until all of the fields are
initialized.
It is an error to declare a default (parameterless) constructor for a struct.
A default constructor is always provided to initialize the struct members to
their default values.
It is an error to initialize an instance field in a struct.
There is no inheritance for structs as there is for classes. A struct cannot
inherit from another struct or class, and it cannot be the base of a class.
Structs, however, inherit from the base class Object. A struct can implement
interfaces, and it does that exactly as classes do.
A struct is a value type, while a class is a reference type.