The value types of C # include: struct (numeric type, bool type, user-defined struct), enumeration, nullable type. The reference types of C # include: arrays, user-defined classes, interfaces, delegates, object, strings. The elements of an array, whether they are reference types or value types, are stored on the managed heap. A reference type stores a reference in the stack whose actual storage location is in the managed heap. For convenience, this article is referred to as a reference type deployed on a managed push. A value type is always assigned where it is declared: as a field, it is stored as a variable (instance) to which it belongs, and is stored on the stack as a local variable. Value types are more efficient in memory management and do not support polymorphism, and are suitable as vectors for storing data; reference types support polymorphism and are suitable for defining the behavior of an application.
The difference, please see http://www.cnblogs.com/Autumoon/archive/2008/08/18/1270685.html
What is the difference between a reference type and a value type in C #, respectively?