时间:上午十点四十五
参考资料:图解C#笔记
笔记标题:请举例说明变量的声明顺序对应在栈中的顺序
笔记内容:变量的值要存储在内存中,内存有两种存储方式,栈和堆。栈主要存储变量值,环境,参数。堆存的内容要更丰富一下,堆存储某类型数据对象。栈是一个内存数组,数组都是有大小和顺序的,栈中存储的数据是后进先出。因为变量是存储在栈中的,自然按照后进先出的顺序进行。堆没有这些规定,可以随意的存储和移除,没有什么顺序。C#中有垃圾收集器,能够自动判断和程序无用的数据并进行清除。
C#中的变量有四种,本地变量,字段,参数和数组元素。区分这些变量的关键是判断是否为类型成员。不是类型成员的有本地变量,参数;是类型成员的有字段;不确定的是数组元素。数组可能是类型成员也可能不是。变量在使用前要进行声明,声明变量有两个要求,一个是声明类型,一个是进行初始化赋值。一个没有初始化赋值的变量,如果有默认值,编译器不会报错;如果没有默认值,编辑器会报错。这个默认值取决于这个变量的类型。自定义的类型是没有默认值的,必须要初始化赋值。如果是预定义的,看情况,有些有,有些没有。类型是指数据结构的模板,类型不是数据结构,也不是具体的数据,它是一个模板,固定了一种数据结构的形式,并且能够表明其实例化的特征。类型要求三要素,名称,数据结构和行为约束。在C#中,有两种划分方法,一种是按照存储方式划分,分为值类型和引用类型。一种是按照使用方法,分为预定义类型和自定义类型。来来去去都是二十二种类型。比如按照使用方法,预定义类型有十六种,三种非简单类型,十三种简单类型。非简单类型有object ,string,dynamic,解释一下,object是所有类型的基类,string是Unicode字符数组,dynamic是动态语言编写程序集时使用。十三种简单类型有sbyte,byte,int ,uint,long,ulong,char,double ,float,decimal,bool,short,ushort.这里面是分为数值型和非数值型的。其中bool和char是非数值型,其他是数值型。数值型分为整型和小数型(浮点型)整型按照位数的不同分为8bit,16bit,32bit,64bit,浮点型按照精度分为双精度的double,和单精度的float。精度之间的区别就是取值范围不同。双精度的取值范围更大。
现在距离说明变量的声明顺序对应在栈中的顺序:
int var1;
int var2;
double var3;
float var4;
var4
var3
var2
var1
画图说明
变量声明顺序 | 值在栈中的顺序 |
int var1; | var4 |
int var2; | var3 |
double var3; | var2 |
float var4; | var1 |
不足之处:没有例子。