1-值类型和引用类型

值类型 引用类型
比喻 复印一份文件,你改你的,我改我的 给一把钥匙,大家开的是同一扇门
存储 数据直接存在变量里 变量存的是"地址",真正的数据在别处
常见类型 int bool double struct class string 数组 List

案例 1:值类型(int)

csharp

int a = 10;

int b = a; // b 复制了 a 的值(复印件)

b = 20;

Console.WriteLine($"a={a}, b={b}");

输出:a=10, b=20

改 b 不影响 a,因为它们是独立的两份数据


案例 2:引用类型(数组)

csharp

int\[\] arr1 = new int\[\] { 1, 2, 3 };

int\[\] arr2 = arr1; // arr2 拿到了 arr1 的"钥匙"

arr20 = 999;

Console.WriteLine($"arr10={arr10}");

输出:arr10=999

改 arr2 居然把 arr1 也改了!因为指向同一份数据


案例 3:方法传参的区别

csharp

void ChangeValue(int x) { x = 100; }

void ChangeRef(int\[\] arr) { arr0 = 100; }

int num = 1;

ChangeValue(num); // 传的是复印件

Console.WriteLine(num); // 输出:1(没变!)

int\[\] nums = { 1, 2, 3 };

ChangeRef(nums); // 传的是钥匙

Console.WriteLine(nums0); // 输出:100(变了!)