System.Object--> System.ValueType--> System.Enum, System.Int16, System.Int32, System.Int64...
The ValueType is an abstract class ValueType, but why Int16,Int32,Int64 were made struct ?
Also another question is that why these struct were inherited from System.ValueType and why not from object class itself ? From my study I understood this much only that , the role of System.ValueType is to ensure that the derived type is allocated on the stack rather than the garbage collected heap.