C#面:值类型与引用类型有什么不同

值类型:

  1. 值类型的变量直接存储数据的值,而不是指向数据的引用。
  2. 值类型的变量在栈上分配内存空间。
  3. 值类型的变量在赋值给另一个变量时,会创建一个新的副本。
  4. 值类型包括整数类型(如 int 、float 、double )、字符类型(如 char )、布尔类型(如bool )等。

引用类型:

  1. 引用类型的变量存储的是数据的引用,而不是实际的数据值。
  2. 引用类型的变量在堆上分配内存空间。
  3. 引用类型的变量在赋值给另一个变量时,会共享同一个引用,指向同一个对象。
  4. 引用类型包括类、接口、数组等。

不同:

  1. 存储位置:值类型存储在栈上,引用类型存储在堆上。
  2. 内存管理:当值类型的变量超出其作用域时,系统会自动释放其占用的内存空间。这是因为栈上的内存分配和释放是由编译器自动管理的,无需手动操作,引用类型需要通过垃圾回收机制来回收不再使用的对象所占用的内存空间。
  3. 赋值行为:值类型赋值时会创建副本,引用类型赋值时会共享同一个引用。
  4. 默认值:值类型的默认值是其对应类型的零值,引用类型的默认值是 null 。
相关推荐
小堃学编程7 分钟前
【项目实战】基于protobuf的发布订阅式消息队列(2)—— 线程池
java·开发语言
每日任务(希望进OD版)13 分钟前
线性DP、区间DP
开发语言·数据结构·c++·算法·动态规划
怨言.14 分钟前
Java内部类详解:从基础概念到实战应用(附案例)
java·开发语言
AC赳赳老秦14 分钟前
OpenClaw image-processing技能实操:批量抠图、图片尺寸调整,适配办公需求
开发语言·前端·人工智能·python·深度学习·机器学习·openclaw
XiYang-DING15 分钟前
【Java】 Java 集合框架
java·开发语言
无风听海16 分钟前
.NET10之Record 深度解析
.net
charlie11451419116 分钟前
嵌入式C++教程实战之Linux下的单片机编程(9):HAL时钟使能 —— 不开时钟,外设就是一坨睡死的硅
linux·开发语言·c++·单片机·嵌入式硬件·c
diving deep21 分钟前
从零构建大模型--实操--搭建python环境
开发语言·python
We་ct21 分钟前
LeetCode 172. 阶乘后的零:从暴力到最优,拆解解题核心
开发语言·前端·javascript·算法·leetcode·typescript
沉淀粉条形变量33 分钟前
rust 单例模式
开发语言·单例模式·rust