#region 知识点一 变量类型的复习 //无符号整形 //byte b = 1; //ushort us = 1; //uint ui = 1; //ulong ul = 1; //有符号整形 //sbyte sb = -1; //short s = -1; //int i = -1; //long l = -1; //浮点型 //float f = 1f; //double d = 1.1; //decimal dec = 1.1m; //特殊类型 //bool bo = true; //char c = 'a'; //string str = "string"; //复杂类型 //enum 枚举 //数组(一维、二维、交错) //把以上 学过的变量类型 分成 值类型和引用类型 //引用类型:string,数组,类(未学习) //值类型:其他、结构体(未学习) #endregion #region 知识点二 值类型和引用类型的区别 //1.使用上的区别 //值类型 int a = 10; //引用类型 int[] arr = new int[] { 1, 2, 3, 4 }; //声明了一个b让其等于之前的a int b = a; //声明了一个arr2让其等于之前的arr int[] arr2 = arr; Console.WriteLine("a={0},b={1}",a,b); Console.WriteLine("arr[0]={0},arr2[0]={1}", arr[0], arr2[0]); b = 20; arr2[0] = 5; Console.WriteLine("修改了b和arr2[0]后:"); Console.WriteLine("a={0},b={1}", a, b); Console.WriteLine("arr[0]={0},arr2[0]={1}", arr[0], arr2[0]); //值类型 在相互赋值时,是将值进行复制,互不影响,他变我不变 //引用类型 在相互赋值时,是将地址进行复制,互相关联,他变我也变 //2.为什么有以上区别 //值类型和应用类型 存储在的内存区域是不同的 存储方式是不同的 //值类型 直接存储在 栈内存 中 -- 系统分配,自动回收,小而快 //引用类型 变量本身存储在 栈内存 中,实际数据存储在 堆内存 中 -- 手动分配,手动回收,大而慢 //string虽然也是引用类型 但它有值类型的特性,因为它不可变 #endregion