C#类型基础之“值类型”与“引用类型”

C#中的类型按照在内存中的分布情况来分类,可以分为以下两种:

值类型(分布于内存中的“堆栈”中)

关于值类型的总结:

  1、值类型包含了 “结构体(struct),枚举(Enum),以及那些所谓的简体类型(int,bool,char...)”;

  2、所有的值类型都隐式的继承自System.ValueType(MSIL代码中可以看出,如下图);

  

  3、值类型中结构体(struct)的重点:

    (1)结构体不能显示声明无参构造函数,可声明有参构造函数(但必须在有参构造函数中对全部字段进行初始化);

      

      

    (2)结构体中的方法在使用前,必须已经全部字段进行初始化;

      

    (3)结构体的构造函数的作用就是初始化全部字段;

      

引用类型(分布于内存中的“”中)

关于引用类型的总结:

  1、引用类型包含了 object、接口、数组、委托、类、自定义类、string;

  2、引用类型在New一个”对象“的”实例“时,发生了以下几个步骤:

    (1)在应用程序的堆(heap)中创建一个引用类型对象的实例,并为其分配一个内存地址;

    (2)自动传递该实例的引用(内存地址)给构造函数;

    (3)调用构造函数;

    (4)返回该实例的引用,赋值给New ”=“ 左边的变量(变量实际只是保存了一个内存地址,真正的数据在“堆”中);

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

PS:以上总结来源于《.Net之美》中所读。

posted @ 2019-07-17 15:58  听雨停了  阅读(215)  评论(0)    收藏  举报