AIGC标识 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 的"钥匙"

arr2[0] = 999;

Console.WriteLine($"arr1[0]={arr1[0]}");
输出:arr1[0]=999
改 arr2 居然把 arr1 也改了!因为指向同一份数据

————————————————————————————————————————————————————————————————————————————————————————————————

案例 3:方法传参的区别
csharp
void ChangeValue(int x) { x = 100; }
void ChangeRef(int[] arr) { arr[0] = 100; }

int num = 1;
ChangeValue(num); // 传的是复印件
Console.WriteLine(num); // 输出:1(没变!)

int[] nums = { 1, 2, 3 };
ChangeRef(nums); // 传的是钥匙
Console.WriteLine(nums[0]); // 输出:100(变了!)

posted @ 2026-08-02 09:46  菜鸟的奋斗军  阅读(16)  评论(0)    收藏  举报