预定义类型:
11种数值类型(不能长度的有符号,无符号整数类型),float, double,decimal是高精度小数类型,它可以准确的表示分数;
Char类型;
bool类型;
栈和堆:
程序运行时,它的数据必须存储在内存中。运行中的程序使用两个内存区域来存储数据:栈和堆。
栈是一个内存数组,是一个LIFO的数据结构。栈存储几种类型的数据:某些类型变量的值;程序当前的执行环境;传递给方法的参数。
堆:堆是一块内存区域,在堆里可以分配大块的内存用于存储某类型的数据对象。于栈不同,堆里的内存能够以任意顺序存入和移除。虽然程序里可以在堆里保存数据,但不能显示地删除他们,由GC自动清除。
值类型和引用类型:
对于值类型,数据存放在栈中。对于引用类型,实际数据存放在堆中,而引用存放在栈里。下图:数据不是另一个对象的成员时是如果存储的。
如果数据是另一个对象的成员,那么它的存储会有些不同:
1. 引用类型对象的数据部分始终存放在堆里:上图;
2. 值类型对象,或引用类型数据的引用部分可以存放在堆里,也可以存放在栈中,这依赖于实际环境。