摘要:int a = 10;int b = a; // 复制值b = 20;Console.WriteLine(a); // 输出:10,a 不受 b 修改的影响class MyClass{public int Value;}MyClass obj1 = new M
在 C# 中,值类型和引用类型是两种不同的数据类型,它们的主要区别体现在内存分配、数据存储方式和操作行为等方面。
int a = 10;int b = a; // 复制值b = 20;Console.WriteLine(a); // 输出:10,a 不受 b 修改的影响class MyClass{public int Value;}MyClass obj1 = new MyClass { Value = 10 };MyClass obj2 = obj1; // 复制引用obj2.Value = 20;Console.WriteLine(obj1.Value); // 输出:20,因为 obj1 和 obj2 指向同一个对象特性值类型引用类型内存位置栈(Stack)堆(Heap)存储内容数据值对象的引用地址默认值类型的默认值,如 0 或 falsenull赋值行为数据拷贝引用拷贝性能高效,无需垃圾回收垃圾回收可能增加性能开销多态支持不支持支持共享性不可共享,独立存储可共享,多个变量引用同一对象在开发中,根据场景选择合适的类型,可以优化程序性能和设计结构。
来源:面试八股文