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

本文深入解析了C#中的两种基本类型——值类型和引用类型。详细介绍了它们在内存中的分布情况,值类型包括结构体、枚举及基本类型如int等,而引用类型则涵盖了类、接口等。同时探讨了这两种类型在实例化过程中的不同行为。

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之美》中所读。

转载于:https://www.cnblogs.com/tingyutingle/p/11201507.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值