Assembly: mscorlib (in mscorlib.dll)
The ValueType class overrides the virtual methods from the Object class, providing more appropriate implementations for value types.
Data types are separated into value types and reference types. Value types are either stack-allocated or allocated inline in a structure. Reference types are heap-allocated. Both reference types and value types are derived from the ultimate base class, the Object class. In cases where it is necessary for a value type to behave like an object, a wrapper that makes the value type look like a reference object is allocated on the heap, and the value type's value is copied into it. The wrapper is marked so that the system knows that it contains a value type. This process is known as boxing, and the reverse process is known as unboxing. Boxing and unboxing allow any data type to be treated as an object.