值类型:基本数据类型、结构、枚举,bool, byte, char, decimal, double, enum, float, int, long, sbyte, short, struct, uint, ulong, ushort,继承自System.ValueType
分配在栈上,像堆起来的盒子,后进先出。不赋初值时默认为0。使用值类型时就是使用的它本身。如果函数参数是值类型,在函数内部对传入的,值类型进行修改值,不会改变原有的,因为传入的是值类型变量的一个副本,除非使用out或ref。可以使用New 进行初始化,例如:int i=new int();
引用类型:类、数组、接口、委托、string
创建的对象分配在堆上,不用的时候是通过垃圾回收器(GC)回收的。不赋初值时默认为null。使用引用类型时,使用的其实是指向对象的引用。如果函数参数是一个引用类型,在函数内部如果改变了值,那么传入的引用类型变量的值也会被修改,因为这时传入的是引用类型的引用,他们指向堆上的同一个对象。
引用类型的引用也存储在栈上。