数据类型
数据类型分为值类型和引用类型
值类型
- 数值类型: byte、short、int、long
- 浮点类型: float、double
- 布尔类型: bool
- 字符类型: ‘a’
引用类型
除值类型以外的类型都是引用类型,大体包含以下几类:
- 字符串类型
- 数组类型
- 类
- 接口
- 委托类型
值类型与引用类型的区别
- 值类型
- 值类型存储在堆栈中。
- 值类型传递是拷贝动作,传递的是值类型自己。
- 值类型在方法返回时自动释放在栈上占用的内存。
- 引用类型
- 引用类型存储在堆中。
- 引用类型传递的是内存指针。
- 引用类型在方法返回时不会释放内存,由垃圾回收机制释放这段内存。
注:堆是为对象分配的内存区域,在堆上创建一个对象,会将该对象的地址传给堆栈上的变量。
装箱与拆箱
- 装箱:值类型转换为引用类型。
- 拆箱:引用类型转换为值类型。
C#数据类型与JAVA不一致的地方
- C# 值类型 约等于 JAVA 不可变类型。
- 枚举类型在C#中是值类型,在JAVA中是引用类型。
- JAVA不存在结构体的概念,但C#存在且结构体是值类型。
- C#中decimal类型属于浮点类型的值类型,类似于JAVA中的double类型。