值类型与引用类型的区别深入探讨
在 C# 中,所有类型都分为两大类:值类型(Value Type)和引用类型(Reference Type)。这是理解内存管理、赋值行为、性能和 null 安全的基础。
1. 核心本质区别
| 对比维度 | 值类型(Value Type) | 引用类型(Reference Type) |
|---|---|---|
| 存储内容 | 直接存储数据本身 | 存储的是数据的引用(地址) |
| 内存分配 | 通常在栈上(Stack),或内联在堆对象中 | 数据在堆上(Heap),栈上只存引用 |
| 赋值行为 | 复制值(产生独立副本) | 复制引用(多个变量指向同一对象) |
| 默认值 | 零值(0、false、null 结构等) | null |