
C# 值类型和引用类型的区别 一句话速记值类型存数据赋值拷副本位置看环境引用类型存地址赋值拷引用对象必在堆。核心语义存储内容的区别值类型变量直接包含实际的数据。引用类型变量存储的是指向对象实例的引用内存地址实际数据存放在对象中。赋值与传参的区别值类型赋值或作为参数传递时会复制整个数据副本。修改新变量不会影响原变量。引用类型赋值或传递时复制的是引用地址。多个变量可能指向同一个对象修改对象内容会相互影响。内存分配位置的区别值类型存储位置取决于它被声明的上下文。如果是局部变量则分配在栈上如果是引用类型类的字段或数组元素则随对象一起分配在堆上。引用类型对象实例始终分配在托管堆上而存储该对象地址的“引用变量”本身分配位置同样取决于上下文栈或堆。继承来源的区别值类型隐式继承自System.ValueType而该类最终也继承自System.Object。且值类型默认是密封的sealed不能被继承。引用类型直接或间接继承自System.Object通常可以被派生继承。性能与开销的区别值类型分配和回收成本低无需垃圾回收 GC 参与但如果数据体积较大频繁传递和赋值时拷贝成本很高。引用类型按引用传递成本低但对象的创建需要在堆上分配内存且最终需要垃圾回收器GC介入会增加额外的系统开销。值类型Value Types主要包括哪些顺口溜整浮布字结枚。整型数值类型浮点型数值类型布尔类型bool字符类型char结构类型struct type枚举类型enum type引用类型Reference Types主要包括哪些顺口溜对字类接委动数。对象类型object字符串类型string类class接口interface委托类型delegate动态类型dynamic数组类型arrayC#/.NET/.NET Core面试宝典本文已收录至《C#/.NET/.NET Core面试宝典》中查看更多C#/.NET/.NET Core面试题欢迎前往下面链接地址查看。https://www.yuque.com/ysgstudyhard/da6e0c