结构体是值类型,分配在栈上,赋值时深拷贝数据,修改副本不影响原值;类是引用类型,实例在堆上,栈中存引用,赋值为浅拷贝,多个变量指向同一对象,修改相互影响。struct 不能继承、无默认构造函数、字段不可直接初始化(C#10前),且不支持null;class 支持继承、多态、构造函数及null赋值。小数据用 struct 提升性能,避免GC;复杂逻辑或大数据用 class。频繁复制大 struct 反而降低效率,且含引用字段易引发意外行为。栈与堆的差异直接影响赋值、传参和比较操作的行为本质。
结构体是值类型,直接在栈上分配内存;类是引用类型,实例在堆上分配,变量只存指向堆中对象的引用。
struct 实例(如 Point p = new Point(1, 2);)整个数据(比如两个 int 字段)就放在栈里,复制时是整块拷贝;class 实例(如 Person person = new Person();)实际对象存在堆中,栈上只存一个 4 或 8 字节的引用(指针),赋值或传参只是复制这个引用,不复制对象本身。
struct 赋值是深拷贝:修改副本不影响原值;class 赋值是浅拷贝引用:两个变量指向同一块堆内存,改其中一个会影响另一个。

struct 总有隐式无参构造,不能显式定义无参构造函数,且不能为 null(除非用 Nullable
小而简单的数据载体(如坐标、颜色、金额)优先用 struct,避免堆分配和 GC 压力;逻辑复杂、需多态、生命周期长或体积较大(一般超过 16 字节)的对象,必须用 class。
基本上就这些。栈 vs 堆不是表面概念,它直接决定了你写的每一行赋值、传参、比较代码到底在发生什么。