4e1548abe2
Part1
63 lines
1.7 KiB
C#
63 lines
1.7 KiB
C#
#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 |