C#学习 1 变量&常量 拆箱&装箱

C#类型

引用类型(包括三个类类型object,string,class name;接口类型interface;数组定义和委托定义 delegate name):引用变量中保存的是对象的内存地址(委托是一种数据结构,能引用一个或多个方法)。
其特点如下:

  1. 需要在委托中为引用类型变量分配内存。
  2. 用new创建引用类型变量,并返回创建对象的地址。
  3. 引用类型变量是由垃圾回收机制来处理的。
  4. 多个引用类型变量可以引用同一对象,对一个变量的操作会影响到另一个变量所引用的同一对象。
  5. 引用类型变量在被赋值前的值都是null。

从本质上来讲,引用一般是靠指针实现,所以引用也一定要有一个空间来存放的,只是这个空间不需要程序员自己来care,也不会对效率有任何的影响。所以总是说,引用是变量的一个别名,对引用的操作就是针对其引用的对象。

值类型:存储应用数值。
其特点如下:

  1. 值类型变量被保存在堆栈中。
  2. 访问值类型变量时,一般直接访问其实例名。
  3. 每个值类型变量都有本身的(数据)副本,所以对一个值类型变量的操作不会影响到其他变量。
  4. 值类型变量复制时,复制的是变量的值,而不是地址。
  5. 值类型变量的值不能是null。

变量

object型:可表示任何类型的值。
任何变量使用之前都必须初始化。

常量

值固定不变,在编译时就确定。分为文本常量和符号常量。文本常量是输入到程序中的值;符号常量代表内存地址的名称,定义后就无法修改。
定义常量之前必须用const开头。
const int MONTHS=12,这样就能在程序中用MONTHS了,不用12。

装箱

值类型转换为引用类型。

  1. 任何值类型到类型object的转换。
  2. 任何值类型到类型System.Value.Type的转换。
  3. 任何值类型到值类型的接口的转换。
  4. 任何枚举类型到类型System.Enum的转换。

装箱过程:
在这里插入图片描述
结果:
在这里插入图片描述
所以值变量复制的时候只复制了值50给引用变量;之后再改变值变量的值也不会影响引用变量的值。

拆箱

引用类型转换为值类型。

  1. 从类型object到任何的值类型的转换。
  2. 从类型System.ValueType到任何的值类型的转换。
  3. 从任何的接口类型到对应的任何值类型的转换。
  4. 从类型System.Enum到任何枚举类型的转换。

拆箱过程:(取消装箱 将引用类型直接复制出来)
这里,chaixiang的类型必须和yinyong的类型一致,否则会报错(也就是说拆箱之前,必须要知道object是从哪个类型装的箱)。
在这里插入图片描述
结果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值