黑马程序员_C#数据类型
C#数据类型分为值类型和引用类型。值类型分为简单类型、结构类型和枚举类型
C#各种数据类型之间的关系:
整数类型分为短字节型(sbyte)、字节型(byte)、短整型(short)、无符号短整型(ushort)、整型(int)、无符号整型(uint)、长整型(long)和无符号长整型(ulong)等
实数类型浮点类型和十进制类型
值类型和引用类型的区别:
1) 值类型通常被分配在栈上,它的变量直接包含变量的实例,使用效率比较高。
2) 引用类型分配在托管堆上,引用类型的变量通常包含一个指向实例的指针,变量通过该指针来引用实例。
3) 一个是值COPY,一个是地址COPY。
值类型 引用类型
内存分配地点分配在栈中分配在堆中
效率效率高,不需要地址转换效率低,需要进行地址转换
内存回收使用完后,立即回收使用完后,不是立即回收,等待GC回收
赋值操作进行复制,创建一个同值新对象只是对原有对象的引用
函数参数与返回值是对象的复制是原有对象的引用,并不产生新的对象
类型扩展不易扩展容易扩展,方便与类型扩展
堆和栈的区别:
1) 栈:由编译器自动分配、释放。在函数体中定义的变量通常在栈上。存放值类型。
2) 堆:一般由程序员分配释放。用new等分配内存函数分配得到的就是在堆上。存放引用类型。
装箱和拆箱:
1) 从值类型转换到引用类型:装箱。
2) 从引用类型转换到值类型:拆箱。