凡是直接继承自System.ValueType的都是值类型,其他就是引用类型
区别就是一个是传值,一个是传引用
值类型:结构体,数值类型(int,double,char,),bool型,枚举,可空类型(nullable)
引用类型:数组,用户定义的类、接口、委托,object,字符串
值类型存储在内存里的栈里,引用类型存储在内存里的堆里。
值传递时,形参到实参实质上是栈里的内容复制,引用传递时,形参到实参实质上栈内容地址的复制。
注意 : object A = 1;
Type T1 = A.GetType();
此时A的类型是Int32 ,而不是object;
所以A还是值类型;
C#哪些是引用类型和值类型
值类型:整数,浮点数,高精度浮点数,布尔,字符,结构,枚举
引用类型:对象(Object),字符串,类,接口,委托,数组
除了值类型和引用类型,还有一种数据类型是空类型(null)gv
整数,浮点数,高精度浮点数,布尔,字符,对象(Object),字符串 是预定义的类型
结构,枚举,类,接口,委托,数组 是复合类型