1. Value type data in the stack, reference type data in the heap.
2. Value types store the values of data directly, whereas reference types store references to data.
3. Base class for value types: System.valuetype,system.valuetype is also inherited from System.Object. base class for reference type: System.Object.
4. Value types are: struct struct, numeric type (short,ushort,int,uint,long,ulong,byte, etc.), bool type (alias of System.Boolean ), enum enum (derived from System.Enum), nullable type.
Reference types are: all arrays (derived from System.Array, and System.Array inherit from System.Object, elements of the array, whether reference types or value types, are stored on the managed heap, such as int[]), Classes (class derived from System.Object), interfaces (interface), delegates (derived from system.delegate), Object (System.Object aliases ), String (alias of System.String ).
5. All value types are sealed (seal) and cannot derive new value types. A reference type can derive a new type.
6. When comparing two value types, there is a comparison of the content, whereas a reference comparison is made when comparing two reference types.
C # Value types and reference types