变量
变量包括引用类型和值类型
- 1.内存分配:
值类型的变量直接存储数据,通常分配在栈上,栈内存的分配和释放速度较快,适合存储较小的数据
引用类型的变量存储的是对象的引用(内存地址),而实际上数据存储在堆上,堆内存的分配和释放速度较慢,适合存储大量的数据。
- 2.生命周期
值类型的变量在使用完毕后会被自动回收,而引用类型的变量需要垃圾回收机制(GC)来管理内存。
- 3.装箱与拆箱
装箱:将值类型转换为引用类型。装箱会创建一个新的对象,并将值类型的数据复制到该对象中。
拆箱:将引用类型转换为值类型。拆箱会从对象中复制数据到值类型变量中。拆箱需要显式类型转换
- 4.类型举例
值类型:int float bool char double struct enum等,默认值不为空
引用类型:class string interface delegate array等,默认值为null
类型总结
- 值类型:直接存储数据,分配在栈上,赋值时创建副本,性能好
- 引用类型:存储对象引用,分配在堆上,赋值时共享引用,性能差,需要GC管理内存,适合存储大量的数据。
变量作用域
变量的作用域通常由花括号{}决定,在if、for、方法等代码块内声明的是局部变量只在声明他们的代码块中可见
静态变量是类级别上声明的整个类中可见
小补充1:对于值类型如果要让他可空(默认值为空),直接在类型后加一个?即可
小补充2:??Null合并运算符
1
2
|
//假如num为空则返回23给a,非空则返回num给a
int a=num??23;
|