详解类型、变量和对象

1.什么是类型(Type)

  类型又称数据类型,是数据在内存中存储时的型号。(内存是计算机程序运行的空间)

  对于某一类型,编程语言会为其配备相应的的运算。编程语言的数据类型和数学的数据类型不完全相同。3除2,数学中是1.5,计算机中是1。

  小内存容纳大尺寸数据会丢失精确度、发生错误。大内存容纳小尺寸数据会导致浪费。

  编程语言与数据类型之间的关系体现在强弱上。在某一编程语言中,数据受数据类型的严格约束称为强类型语言,较弱或不受数据类型的约束称为弱类型语言。C#语言是强类型语言。

2.类型在C#语言中的作用

详解类型、变量和对象

(1)明确存储此类型变量所需的内存空间大小。(Size)

(2)此类型的值可表示的最大、最小值范围。(Range)

(3)此类型所包含的成员(如方法、属性、事件等)静态、动态。

(4)此类型由何基类派生而来。

(5)程序运行时,此类型的变量在分配在内存的什么位置

         静态程序装在硬盘里,动态程序装在内存里

             Stack(栈)简介:为方法(函数)调用服务,比较小,

                    Stack overflow,栈爆掉了

             Heap(堆)简介:用于存储对象,比较大,

     使用Performance Monitor查看进程的堆内存使用量。

(6)此类型所允许的操作(运算)。

3.C#语言的类型系统

(1)类(Classes)如Window、Form、Console

(2)结构体(Structures),如int32、int64、Single、Double

(3)枚举(Enumerations),如HorizontalAlignment,Visiblility:给定一个集合,用户只能在该集合中进行选择。

(4)接口(Interfaces)

(5)委托(Delegates)

详解类型、变量和对象

第一列为引用类型、第二例为值类型。蓝色为基本数据类型。

4.变量、对象与内存

       表面上看,变量的用途是存储数据,实际上,变量表示了存储位置,并且每个变量都有一个类型,以决定什么样的值能够进入变量。变量名表示(对应着)变量的值在内存中的存储位置。Int32个比特位存储四个字节。

       变量一共有七种,包括静态变量,实例变量(成员变量、字段),数组元素,值参数,引用参数,输出形参数,局部变量。

 狭义即通常说的变量指的是局部变量,局部变量就是声明在方法体和函数体里声明的变量。

        变量的声明:有效的修饰符组合(非必须)加类型加变量名加初始化器(非必须)。例如:public static int Amount=0    public static为有效修饰符组合,int为类型,Amount为变量名=0为初始化器

      总结:变量就是以变量名所对应的内存地址(根据空余情况分配,变量名与地址对应)为起点、以其数据类型所要求的存储空间为长度的一块内存区域。

      值类型的变量:变量在内存中存储遵循高高低低原则,即高位存于高字节。因为值类型是实例与变量合而为一的原则,所以值类型没有实例。

      引用类型的变量与实例:对于引用类型的变量,先分配四个字节的空地址,在按值类型配置,然后在空地址中存贮值类型的地址。

详解类型、变量和对象

      引用类型的变量存储的就是引用类型的实例在堆内存上的内存地址,通过这样的方式,就构成了引用类型的变量对引用类型实例的引用。

     局部变量是在栈上分配内存。实例在堆上分配。

     变量的默认值

     常量,不能再次被赋值,不能省略初始化器。

     装箱与拆箱:引用类型引用栈上的值变量,先复制值变量的值,然后在堆中粘贴,引用类型使用它的地址,叫装箱。在栈上引用装箱的值,叫做拆箱。