dev.to | 📄 原文链接 | 2026-10-02 收录

结构体并不在栈上:C# 究竟如何管理内存

来源:dev.to — 2026-10-01

📋 概述

文章拆穿了一条流传最广的 C# 迷思——「类在堆上、结构体在栈上」。作者指出真正的区别不是位置而是值语义与引用语义,CLR 的规则是值类型随其声明容器一起分配:局部变量确实在栈上,但结构体作为字段时会随对象躺在堆里,作为数组元素时会连续内联存放,被装进 object 时则被复制到堆上(装箱)。理解这一点才能避开意外的 GC 停顿和隐蔽的可变值 Bug。

🔑 核心要点

💡 金句

值类型存在它的声明容器里——结构体并不要求一块栈空间,它只要求数据直接放在存储位置上,中间不加一层指针。
← 返回 dev.to 首页