From http://www.codeproject.com
A struct is implicitly sealed, a class isn' t.
A struct can't be abstract, a class can.
A struct can't call: Base () in its constructor whereas a class with no explicit base class can.
A struct can't extend another class, a class can.
A struct can't declare protected members (eg fields, nested types) a class can.
A struct can't declare abstract function members, an abstract class can.
A struct can't declare virtual function members, a class can.
A struct can't declare sealed function members, a class can.
A struct can't declare override function members, a class can. the one exception to this rule is that a struct can override the virtual methods of system. object, viz, equals (), and gethashcode (), and tostring ().
I remember this difference was made on the Chinese website, but it is more detailed!